Golang 中方法集的实现主要通过接口来实现。
具体来说,包括以下几个部分:
一、定义接口
使用interface{}
关键字定义一个接口:
type Reader interface {
Read()
}
这里定义了一个Reader
接口,包含一个Read()
方法。
二、实现接口
让具体的类型实现这个接口:
type File struct {}
func (f *File) Read() {
// 读取文件逻辑
}
*File实现了Read()
方法,所以实现了Reader
接口。
三、定义接口方法集
使用接口作为类型来定义一个方法集:
type ReaderSet struct {
r Reader
}
四、添加方法实现
给方法集添加方法,通过成员变量来实现:
func (rs ReaderSet) ReadAll() {
buf := make([]byte, 1024)
for {
n, _ := rs.r.Read(buf)
// ...
}
}
这里通过rs.r
调用了Reader
的Read()
方法。
五、使用方法集
file := File{}
rs := ReaderSet{r: &file}
rs.ReadAll()
定义一个ReaderSet
的实例,使用它的方法。
总的来说,Golang通过:
- 定义接口
- 具体类型实现接口
- 接口作为方法集类型
- 给方法集添加方法
- 使用方法集实例
来实现方法集的能力。它抽象了行为,可以让实现接口的不同类型共享方法。