摘要:go new 尽管没有构造函数,go有一个内置的函数new,可以用来分配一个类型需要的内存。new(X)和&X{}是等效的: goku := new(Saiyan) // 等效 goku := &Saiyan{} 用那种方式取决于你,但是你会发现,当需要去初始化结构体字段时,大多数人更喜欢使用后者,
阅读全文
摘要:go构造函数 结构体没有构造函数,你可以创建一个函数返回一个相应类型的实例代替(类似一个工厂): func NewSaiyan(name string, power int) *Saiyan { return &Saiyan{ Name: name, Power: power, } } 这种模式会导
阅读全文
摘要:go结构体上的函数 我们可以将一个方法和一个结构体关联: type Saiyan struct { Name string Power int } func (s *Saiyan) Super() { s.Power += 10000 } 在上面的代码中,我们可以说类型*Saiyan是Super方法
阅读全文
摘要:go结构体 go不是像c++、java、ruby和c#一样的面向对象语言。它没有对象和继承的概念。因此也没有很多面向对象语言的特性如多态和重载。 go提供了结构体,并且可以将一些方法和结构体关联。go也支持一种简单但是更有效的组合形式。总的来说,这是为了让代码更加简洁,但是在一些场合,你会失去一些面
阅读全文
摘要:go函数声明 这是一个很好的机会去介绍函数支持多值返回。查看下面3个函数:一个没有返回值,一个返回一个值,一个返回2个值。 func log(message string) { } func add(a int, b int) int { } func power(name string) (int
阅读全文
摘要:go变量和声明 这将是美好的开始和结束,通过写下x = 4,我们查看变量,可以说声明了一个变量并赋值,但是很不幸,go语言变量声明和赋值比这更复杂。通过学习一些简单的示例开始学习变量声明和赋值。然后在下一章,当我们创建并使用结构体时,我们会深入学习。尽管如此,你需要花一些时间去适应。 你可能会惊讶,
阅读全文