Go语言中 多态的理解和实现细节 (Golang经典编程案例)


多态 :接口的多种不同的事项方式

在Golang中,多态以接口实现,可以按照统一的接口来调用不同的实现,这时接口变量就呈现多种不同的形态。

接口体现多态有两种表现方式

  1. 多态参数;

  2. 多态数组。

下面以一个案例 详细演示多态

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