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

我开始和 Go 开玩笑,对这个new功能有点恼火。它似乎非常有限,尤其是在考虑具有匿名字段或内联初始化的结构时。所以我通读了规范并偶然发现了以下段落

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

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


侃侃无极
浏览 209回答 1
1回答

慕哥6287543

是的,你是对的。new对结构没那么有用。但它与其他基本类型有关。new(int)会给你一个指向零值的指针int,你不能做&int{}或类似的。无论如何,根据我的经验,您很少需要它,因此new很少使用。你可以声明一个普通的int并传递一个指向它的指针。事实上,这样做可能更好,因为您无需考虑在堆栈中分配与在堆中分配,因为编译器会为您做出决定。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go