2.0 结构体

go不是像c++、java、ruby和c#一样的面向对象语言。它没有对象和继承的概念。因此也没有很多面向对象语言的特性如多态和重载。

go提供了结构体,并且可以将一些方法和结构体关联。go也支持一种简单但是更有效的组合形式。总的来说,这是为了让代码更加简洁,但是在一些场合,你会失去一些面向对象语言提供的特性。(需要特别指出的是,通过组合实现继承是一个很古老的方式了,但是go是我使用过的所有语言中,立场最坚定的。)

尽管你不能像你之前使用的面向对象语言一样使用go,但是你将会注意到,定义一个结构体和定义一个类是很相似的。这里给出了一个简单的例子,定义一个Saiyan结构体:

  1. type Saiyan struct {
  2. Name string
  3. Power int
  4. }

我们很快会看到怎么往这个结构体添加一个方法,就像类会拥有方法一样。在这之前,我们需要去学习如何声明结构体。

链接