概述
接口定义: 定义了一组方法,但是不包含这些方法的具体实现。
为什么要使用接口?
我们从一个例子来理解:
package main
import "fmt"
type Cat struct {
}
type Dog struct {
}
func (c Cat) Say() string {
return "喵喵喵"
}
func (d Dog) Say() string {
return "汪汪汪"
}
func main() {
c := Cat{}
fmt.Println("猫:", c.Say())
d := Dog{}
fmt.Println("狗:", d.Say())
}
上面的代码中定义了猫和狗,然后它们都会叫,你会发现main函数中明显有重复的代码,如果我们后续再加上猪、青蛙等动物的话,我们的代码还会一直重复下去。那我们能不能把它们当成“能叫的动物”来处理呢。
当然这种事情很多,就像面向对象语言一样,我们可以定义一个动物类,动物类里写共有的方法。其他具体的事物,我们就用个别的类就可以了,然后继承动物类就行了。
Go语言中为了解决类似上面的问题,就设计了接口这个概念。接口区别于我们之前所有的