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

时间:2015-05-06 19:54:17

标签: go

在Go中,给定结构类型T,new(T)&T{}之间有什么区别?

2 个答案:

答案 0 :(得分:7)

没有区别。根据{{​​3}},它们是等价的。

  

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

答案 1 :(得分:4)

扩展@Doug回答:

两种形式new(T)&T{}完全等效:两者都分配零T并返回指向此分配内存的指针。唯一的区别是,& T {}不适用于builtin types like int;你只能做new(int)