Golang 方法与接口

212 阅读1分钟

方法

方法是面向对象里的概念,对象是一组数据以及对这些数据的操作。对数据的操作就是方法。

方法与函数

方法本质是一个函数,只不过该函数绑定了一组数据,可以看作是一个函数中拥有一个隐藏的参数。所以,函数中拥有的概念照样可以迁移到方法中。

例如:

  • 函数变量

在方法中,就是方法变量。该方法变量绑定了一个对象,调用该方法变量的时候会对绑定的那个对象产生影响。

接口

接口是抽象的类型,是一份合约,用来声明实现了该接口的类型都拥有哪些方法,OOP 中多态的实现和这密切相关。

在 Golang 中,接口是 隐式实现 的。只要实现了该接口的所有方法,就是实现了该接口。

选择子和接收者

刚才提到过,Golang 中的接口是隐式实现,只要实现了该接口所有方法就是实现了该接口,那么,Golang 是如何判别某种类型是否实现了某个方法呢?

答案是选择子和接收者。

方法的名称、参数、和返回值就是选择子,接收者就是方法前的类型

func (r *Reciever) method(a, b string) string {
    ...
}

选择子判定是哪个方法,接收者判定是谁实现。

一般情况下,推荐使用指针类型的接收者。