2.3 构造函数

结构体没有构造函数,你可以创建一个函数返回一个相应类型的实例代替(类似一个工厂):

  1. func NewSaiyan(name string, power int) *Saiyan {
  2. return &Saiyan{
  3. Name: name,
  4. Power: power,
  5. }
  6. }

这种模式会导致开发者犯一些错误。另外,这有点轻微的语法变化;其次,让人觉得不好区分。

我们的工厂函数没有必要返回一个指针;下面代码是完全有效的:

  1. func NewSaiyan(name string, power int) Saiyan {
  2. return Saiyan{
  3. Name: name,
  4. Power: power,
  5. }
  6. }

链接