分配:新(Foo)vs Foo {}

时间:2014-07-28 13:12:56

标签: go

以下创建对象的语法有什么区别?如果结果相同,为什么有两种不同的方法?

type Foo struct {
    X int
}

f1 := &Foo{}
f2 := new(Foo)

1 个答案:

答案 0 :(得分:10)

使用new是直接返回本机类型(intfloat64uint32,...)指针的唯一方法,而无需创建正常变量首先返回指向它的指针。

关于https://groups.google.com/forum/#!topic/golang-nuts/K3Ys8qpml2Yhttps://groups.google.com/forum/#!topic/golang-nuts/GDXFDJgKKSs的讨论较长,但基本上没用。

Dave Cheney引用:

  新的不会消失,它不能,它是保证的一部分   Go 1的规范。

     

你不需要使用它,大多数人不需要,但这并不意味着它   没用。