传统编程语言,如Java,C++或PHP,对面向对象都提供了支持,一般的面向对象编程,主要是定义一个个抽象的类,然后再通过实例化一个个的对象,但是,Go语言虽然提供了面向对象的支持,但与传统语言并不相同,这可能是许多从其他编程语言转过来的程序员不太应Go语言的原因。

下面来讲讲Go对面向对象的支持有什么不同。

Go语言的面向对象定义,与其他语言不同。

传统编程语言是,每个对象,有自己的属性和方法,对象通过调用方法,来达到修改属性,改变对象状态。

而在Go语言中,每个类型或变量,都附加一些方法,然后通过调用方法来执行程序。

如何给类型声明一个方法呢?方法的形式与函数类似,只不过函数的func与函数之间加一个该类型变量,如下所示:

在上面的例子中,变量u称为方法的接收器(receiver),也就是调用该方法的对象,与传统编程使用self或this表示调用对象不同,Go语言可以自定义接收器的名称,不过一般建议使用简称名称,如这里使用u。