为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
侃侃无极 2021-09-13 10:40:49
我开始和 Go 开玩笑,对这个new功能有点恼火。它似乎非常有限,尤其是在考虑具有匿名字段或内联初始化的结构时。所以我通读了规范并偶然发现了以下段落:调用内置函数 new 或获取复合文字的地址会在运行时为变量分配存储空间。所以我怀疑new(T)并且&T{}会以完全相同的方式行事,这是正确的吗?如果这是正确的,应该在什么情况下new使用?
查看完整描述

1 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

是的,你是对的。new对结构没那么有用。但它与其他基本类型有关。new(int)会给你一个指向零值的指针int,你不能做&int{}或类似的。

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


查看完整回答
反对 回复 2021-09-13
  • 1 回答
  • 0 关注
  • 204 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信