方法
方法是面向对象里的概念,对象是一组数据以及对这些数据的操作。对数据的操作就是方法。
方法与函数
方法本质是一个函数,只不过该函数绑定了一组数据,可以看作是一个函数中拥有一个隐藏的参数。所以,函数中拥有的概念照样可以迁移到方法中。
例如:
- 函数变量
在方法中,就是方法变量。该方法变量绑定了一个对象,调用该方法变量的时候会对绑定的那个对象产生影响。
接口
接口是抽象的类型,是一份合约,用来声明实现了该接口的类型都拥有哪些方法,OOP 中多态的实现和这密切相关。
在 Golang 中,接口是 隐式实现 的。只要实现了该接口的所有方法,就是实现了该接口。
选择子和接收者
刚才提到过,Golang 中的接口是隐式实现,只要实现了该接口所有方法就是实现了该接口,那么,Golang 是如何判别某种类型是否实现了某个方法呢?
答案是选择子和接收者。
方法的名称、参数、和返回值就是选择子,接收者就是方法前的类型
func (r *Reciever) method(a, b string) string {
...
}
选择子判定是哪个方法,接收者判定是谁实现。
一般情况下,推荐使用指针类型的接收者。