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

Dou*_*son 2 go

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

Dou*_*son 7

没有区别.根据Effective Go,它们是等价的.

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


Pra*_*hra 5

扩展@Doug 答案:

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