20.2 函数和方法的区别

方法相对于函数多了接收器,这是他们之间最大的区别。

函数是直接调用,而方法是作用在接收器上,方法需要类型的实例来调用。方法接收器必须有一个显式的名字,这个名字必须在方法中被使用。

在接收器是指针时,方法可以改变接收器的值(或状态),这点函数也可以做到(当参数作为指针传递,即通过引用调用时,函数也可以改变参数的状态)。

Go 语言中,(接收器)类型关联的方法不写在类型结构里面,就像类那样;耦合更加宽松;类型和方法之间的关联由接收器来建立。

方法没有和定义的数据类型(结构体)混在一起,方法和数据是正交,而且数据和行为(方法)是相对独立的。