Golang入门到项目实战 | golang接口和类型的关系
Posted 一个热爱编程的通信人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang入门到项目实战 | golang接口和类型的关系相关的知识,希望对你有一定的参考价值。
- 一个类型可以实现多个接口
- 多个类型可以实现同一个接口(多态)
一个类型实现多个接口
一个类型实现多个接口,例如:有一个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接口值类型接收者和指针类型接收者