我开始和 Go 开玩笑,对这个new功能有点恼火。它似乎非常有限,尤其是在考虑具有匿名字段或内联初始化的结构时。所以我通读了规范并偶然发现了以下段落:调用内置函数 new 或获取复合文字的地址会在运行时为变量分配存储空间。所以我怀疑new(T)并且&T{}会以完全相同的方式行事,这是正确的吗?如果这是正确的,应该在什么情况下new使用?
1 回答
慕哥6287543
TA贡献1831条经验 获得超10个赞
是的,你是对的。new
对结构没那么有用。但它与其他基本类型有关。new(int)
会给你一个指向零值的指针int
,你不能做&int{}
或类似的。
无论如何,根据我的经验,您很少需要它,因此new
很少使用。你可以声明一个普通的int
并传递一个指向它的指针。事实上,这样做可能更好,因为您无需考虑在堆栈中分配与在堆中分配,因为编译器会为您做出决定。
- 1 回答
- 0 关注
- 204 浏览
添加回答
举报
0/150
提交
取消