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

new(T) 和 &T{} 有什么区别?

new(T) 和 &T{} 有什么区别?

Go
12345678_0001 2021-10-04 16:13:57
在 Go 中,给定结构类型 T,new(T)和之间有什么区别&T{}?
查看完整描述

2 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

没有区别。根据Effective Go,它们是等效的。

作为一种限制情况,如果复合文字根本不包含任何字段,它会为该类型创建一个零值。表达式 new(File) 和 &File{} 是等价的。


查看完整回答
反对 回复 2021-10-04
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

扩展@Doug 答案:

两种形式new(T)&T{}完全等价:都分配一个零 T 并返回一个指向此分配内存的指针。唯一的区别是, &T{} 不适用于诸如 int; 之内置类型。你只能这样做new(int)


查看完整回答
反对 回复 2021-10-04
  • 2 回答
  • 0 关注
  • 221 浏览
慕课专栏
更多

添加回答

举报

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