(惯用语?)新(T)和& T {...}之间的区别?

时间:2015-01-25 13:10:25

标签: go

我开始和Go开玩笑,对new函数有点恼火。它似乎非常有限,特别是在考虑具有匿名字段或内联初始化的结构时。所以我仔细阅读了规范和stumbled over the following paragraph

  

调用内置函数new或获取复合文字的地址在运行时为变量分配存储空间。

所以我怀疑new(T)&T{}会以完全相同的方式行事,这是正确的吗?如果这是正确的,在什么情况下应该new使用?

1 个答案:

答案 0 :(得分:5)

是的,你是对的。 new对结构没有用处。但它与其他基本类型有关。 new(int)会为您指向零值int,但您无法&int{}或类似。

无论如何,根据我的经验,你很少想要这样,所以很少使用new。你可以声明一个普通的int并传递指向它的指针。事实上,这样做可能更好,因为你可以解放在堆栈中和堆中分配,因为编译器会为你决定。