在Go中,给定结构类型T,new(T)
和&T{}
之间有什么区别?
答案 0 :(得分:7)
没有区别。根据{{3}},它们是等价的。
作为限制情况,如果复合文字根本不包含任何字段,则会为该类型创建零值。表达式new(File)和& File {}是等效的。
答案 1 :(得分:4)
扩展@Doug回答:
两种形式new(T)
和&T{}
完全等效:两者都分配零T并返回指向此分配内存的指针。唯一的区别是,& T {}不适用于builtin types like int
;你只能做new(int)
。