以下创建对象的语法有什么区别?如果结果相同,为什么有两种不同的方法?
type Foo struct {
X int
}
f1 := &Foo{}
f2 := new(Foo)
答案 0 :(得分:10)
使用new
是直接返回本机类型(int
,float64
,uint32
,...)指针的唯一方法,而无需创建正常变量首先返回指向它的指针。
关于https://groups.google.com/forum/#!topic/golang-nuts/K3Ys8qpml2Y和https://groups.google.com/forum/#!topic/golang-nuts/GDXFDJgKKSs的讨论较长,但基本上没用。
Dave Cheney引用:
新的不会消失,它不能,它是保证的一部分 Go 1的规范。你不需要使用它,大多数人不需要,但这并不意味着它 没用。