什么是接口


接口是一种描述一类事物具有相同操作的抽象:即某一类的事物都具有相同的操作合集。

go接口


在大多数语言中,实现某接口必须用 implement 显示地声明自己实现的是声明接口,而在go语言中,则无需声明实现接口,这种特性可称之为 duck typing
比如,假设一只鸭子类型的接口有 游泳 呱呱叫 走路 等方法,任何一个对象如果包含这些方法,我们可以认为它是鸭子。

go接口类型


在go语言中,可以定义接口类型,它描述了一系列方法的集合,一个实现了这些方法的具体类型是这个接口类型的实例。
有点抽象,可以这么理解:现在定义一个接口类型叫 Animal,其包含方法 Breath,那么所有包含 Breath方法的具体类型可视为一个Animal的实例。

接口类型还可以嵌套,例如,go自带io包里的接口 io.Writerio.Readerio.ReadWriter

1
2
3
4
5
6
7
8
9
10
type Writer interface{
Write(p []byte) (n int, err error)
}
type Reader interface {
Read(p []byte) (n int, err error)
}
type ReadWriter interface {
Reader
Writer
}

实现接口的条件


一个类型如果拥有一个接口的所有方法,那么这个类型就实现了这个接口。