视频来源:B站《golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]》
一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!
附上汇总贴:Go语言自学系列 | 汇总_COCOgsta的博客-CSDN博客
- 一个类型可以实现多个接口
- 多个类型可以实现同一个接口(多态)
一个类型实现多个接口
一个类型实现多个接口,例如:有一个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语言中实现一个类型同时满足多个接口,如Player和Video,通过Mobile结构体实例化并演示了多态的运用。学习者将理解如何定义接口和结构体,以及如何在实际项目中操作和测试这些概念。

1947

被折叠的 条评论
为什么被折叠?



