多态 :接口的多种不同的事项方式
在Golang中,多态以接口实现,可以按照统一的接口来调用不同的实现,这时接口变量就呈现多种不同的形态。
接口体现多态有两种表现方式 :
多态参数;
多态数组。
下面以一个案例 详细演示多态 :
package main import "fmt" //声明一个接口 type Usb interface { //声明两个没有实现的方法 Start() Stop() } type Phone struct { name string } //让Phone实现Usb接口的方法 func (p Phone) Start() { fmt.Println("手机开始工作...") } func (p Phone) Stop() { fmt.Println("手机停止工作...") } type Camera struct { name string } func (c Camera) Start() { fmt.Println("相机开始工作...") } func (c Camera) Stop() { fmt.Println("相机停止工作...") } func main() { //定义一个Usb接口数组,可以存放Phone和Canera的结构体变量 //这里就体现出多态数组 var usbArr [3]Usb usbArr[0] = Phone{"小米"} usbArr[1] = Phone{"vivo"} usbArr[2] = Camera{"诺基亚"} fmt.Println(usbArr) test := Phone{} test.name = "小米" fmt.Println(test.name) test.Start() test.Stop() test1 := Camera{} test1.name = "索尼相机" fmt.Println(test1.name) test1.Start() test1.Stop() }
执行结果如下图所示:
Go语言中 多态的理解和实现细节 (Golang经典编程案例)介绍到这里,更多Go学习请参考编程字典Go教程 和问答部分,谢谢大家对编程字典的支持。
原文链接:https://blog.csdn.net/cui_yonghua/article/details/94403891?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163479651116780366526677%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=163479651116780366526677&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_v2~rank_v29-17-94403891.pc_v2_rank_blog_default&utm_term=go&spm=1018.2226.3001.4450