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

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()
}

执行结果如下图所示:
在这里插入图片描述

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/cui_yonghua/article/details/94403891
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2019-08-27 19:49:20
  • 阅读 ( 771 )
  • 分类:Go

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢