用于创建对象的下列语法之间有什么区别?为什么2种不同的方法,如果结果是相同的?
type Foo struct {
X int
}
f1 := &Foo{}
f2 := new(Foo)
使用new
是直接返回本地类型(int
, float64
, uint32
,…)的指针的唯一方法,而无需先创建正常变量,然后返回指向它的指针。
在https://groups.google.com/forum/#上有一个更长的讨论!topic/golang-nuts/K3Ys8qpml2Y和https://groups.google.com/forum/#!主题/golang-nuts/GDXFDJgKKSs,但基本上是无用的。
引用自Dave Cheney:new不会消失,它不会消失,它是保证的一部分1.
你不需要使用它,大多数人不需要,但这并不意味着它没有什么用