查看上一篇切片类型请点我
1.什么是接口
接口是一组仅包含方法名,参数,返回值的未具体实现的方法的集合。是面向对象语言中用来限制类行为的,它只会定义类的方法,但不会具体定义这个方法,实现接口的类必须实现接口中的方法。废话少说,举个例子:
package main
import "fmt"
type Animaler interface {
Eat(f string)
Speak(l string)
}
type Dog struct {
}
func (dog Dog) Eat(f string){
fmt.Printf("我是狗,我吃%s\n", f)
}
func (dog Dog) Speak(l string){
fmt.Printf("我是狗,我的叫声是%s\n", l)
}
type Cat struct {
}
func (cat Cat) Eat(f string){
fmt.Printf("我是猫,我吃%s\n", f)
}
func (cat Cat) Speak(l string){
fmt.Printf("我是猫,我的叫声是%s\n", l)
}
func main() {
var animal Animaler
animal = new(Dog)
animal.Eat("骨头")
animal.Speak("汪汪")
animal = new(Cat)
animal.Eat("鱼")
animal.Speak("喵喵")
}
运行结果:
我是狗,我吃骨头
我是狗,我的叫声是汪汪
我是猫,我吃鱼
我是猫,我的叫声是喵喵
接口的继承
package main
import "fmt"
type Animaler1 interface {
Eat(f string)
}
type Animaler2 interface {
Animaler1
Speak(l string)
}
type Dog struct {
}
func (dog Dog) Eat(f string){
fmt.Printf("我是狗,我吃%s\n", f)
}
func (dog Dog) Speak(l string){
fmt.Printf("我是狗,我的叫声是%s\n", l)
}
func main() {
var animal Animaler2
animal = new(Dog)
animal.Eat("骨头")
animal.Speak("汪汪")
}
运行结果:
我是狗,我吃骨头
我是狗,我的叫声是汪汪
查看下一篇map类型请点我