Go语言自学系列 | golang接口和类型的关系

Posted COCOgsta

tags:

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

视频来源:B站《golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]》

一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!

附上汇总贴:Go语言自学系列 | 汇总_COCOgsta的博客-CSDN博客


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

以上是关于Go语言自学系列 | golang接口和类型的关系的主要内容,如果未能解决你的问题,请参考以下文章

Go语言自学系列 | golang通过接口实现OCP设计原则

Go语言自学系列 | golang函数类型与函数变量

Go语言自学系列 | golang方法接收者类型

Go语言自学系列 | golang数组

Go语言自学系列 | go语言数据类型

Go语言自学系列 | go语言布尔类型