# 2.4 new 尽管没有构造函数,go有一个内置的函数`new`,可以用来分配一个类型需要的内存。`new(X)`和`&X{}`是等效的: ```go goku := new(Saiyan) // 等效 goku := &Saiyan{} ``` 用那种方式取决于你,但是你会发现,当需要去初始化结构体字段时,大多数人更喜欢使用后者,因为后者更易读: ```go goku := new(Saiyan) goku.name = "goku" goku.power = 9001 //对比 goku := &Saiyan { name: "goku", power: 9000, } ``` 无论你选择那种方式,如果你选择上面的工厂模式,你可以隐藏一些代码细节,但是需要留意任何内存分配细节。 ## 链接