Go语言的接口是一种抽象数据类型,是一系列接口的集合,接口把所有的具有共性的方法定义在一起,任何其它类型只要实现了接口定义的方法就是实现了接口。接口是duck-type编程的一种体现,不关心属性(数据),只关心行为(方法)。
type 接口类型名 interface{
方法名1(参数列表)(返回值)
方法名2(参数列表)(返回值)
...
}
type Fruit interface{
Color(color string)
Num(n int)
}
在 go 中实现接口很简单,不需要显式的声明实现了某个接口,想要实现某个接口,只需要实现接口中的所有方法即可。
type Fruit interface {
Color() (color string)
Num() (n int)
}
type Apple struct {
Col string
N int
}
func (apple Apple) Color() (color string) {
fmt.Println(apple.Col)
return apple.Col
}
func (apple Apple) Num() (n int) {
fmt.Println(apple.N)
return apple.N
}
type Orange struct {
Col string
N int
}
func (orange Orange) Color() (color string) {
fmt.Println(orange.Col)
return orange.Col
}
func (orange Orange) Num() (n int) {
fmt.Println(orange.N)
return orange.N
}
上面定义了两个结构体类型和一个接口,下面我们通