【Golang系列】-接口和类型的关系
2022-03-19
接口和类型的关系
- 一个类型可以实现多个接口
- 多个类型可以实现同一个接口(多态)
- 一个类型实现多个接口
一个类型实现多个接口:比如,有一个player接口可以播放音乐,有一个video接口可以播放视频,一个手机mobile实现这两个接口,又能播音乐又能放视频
package main
import "fmt"
type Player interface {
PlayMusic()
}
type Video interface {
PlayVideo()
}
type Mobile struct {
}
func (m Mobile) playMusic() {
fmt.Println("播放音乐...")
}
func (m Mobile) playVideo() {
fmt.Println("播放视频...")
}
func main() {
m := Mobile{}
m.playMusic()
m.playVideo()
}
结果:
播放音乐...
播放视频...
多个类型实现同一个接口
比如一个宠物pet,猫类型和狗类型都可以实现该接口,都可以把猫狗当宠物类型对待,这在其他语言叫多态
package main
import "fmt"
//pet接口
type Pet interface {
eat()
}
//定义dog结构体
type Dog struct {
}
type Cat struct {
}
func (cat Cat) eat() {
fmt.Println("cat eat...")
}
func (dog Dog) eat() {
fmt.Println("dog eat...")
}
func main() {
var p Pet
p = Cat{}
p.eat()
p = Dog{}
p.eat()
}
结果:
cat eat...
dog eat...