Golang入门到项目实战 | golang接口和类型的关系

Posted 一个热爱编程的通信人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang入门到项目实战 | golang接口和类型的关系相关的知识,希望对你有一定的参考价值。

  1. 一个类型可以实现多个接口
  2. 多个类型可以实现同一个接口(多态)

一个类型实现多个接口

一个类型实现多个接口,例如:有一个Player接口可以播放音乐,有一个Video接口可以播放视频,一个手机Mobile实现这两个接口,既可以播放音乐,又可以播放视频。

定义一个Player接口

type Player interface 
    playMusic()

定义一个Video接口

type Video interface 
    playVideo()

定义Mobile接口体

type Mobile struct 

实现两个接口

func (m Mobile) playMusic() 
    fmt.Println("播放音乐")


func (m Mobile) playVideo() 
    fmt.Println("播放视频")

测试

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()

运行结果

[Running] go run "d:\\SynologyDrive\\软件开发\\go\\golang入门到项目实战\\goproject\\360duote.com\\pro01\\test.go"
播放音乐
播放视频

多个类型实现同一个接口

比如,一个宠物接口Pet,猫类型Cat和狗类型Dog都可以实现该接口,都可以把猫和狗当宠物类型对待,这在其他语言中叫多态。

定义一个Pet接口

type Pet interface 
    eat()

定义一个Dog结构体

type Dog struct 

定义一个Cat结构体

type Cat struct 

实现接口

func (cat Cat) eat() 
    fmt.Println("cat eat...")


func (dog Dog) eat() 
    fmt.Println("dog eat...")

测试

package main

import "fmt"

type Pet interface 
    eat()


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()

运行结果

[Running] go run "d:\\SynologyDrive\\软件开发\\go\\golang入门到项目实战\\goproject\\360duote.com\\pro01\\test.go"
cat eat...
dog eat...

以上是关于Golang入门到项目实战 | golang接口和类型的关系的主要内容,如果未能解决你的问题,请参考以下文章

Golang入门到项目实战 | golang接口嵌套

Golang入门到项目实战 | golang接口值类型接收者和指针类型接收者

Golang入门到项目实战 | golang接口值类型接收者和指针类型接收者

Golang入门到项目实战 第一个golang应用

Golang入门到项目实战 golang 函数

Golang入门到项目实战 golang for循环语句