【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...