【golang笔记】go_多态polymorphism(17)
Page content
这一篇简单的整理了golang 多态polymorphism
相关的内容。
1.golang中多态的2种形式
1.1 多态参数
package main
import "fmt"
type Usb interface {
Start()
Stop()
}
type Phone struct {
}
type Camera struct {
}
type Computer struct {
}
func (p Phone) Start() {
fmt.Println("链接手机...")
}
func (p Phone) Stop() {
fmt.Println("断开手机...")
}
func (c Camera) Start() {
fmt.Println("链接相机...")
}
func (c Camera) Stop() {
fmt.Println("断开相机...")
}
//多态参数
func (com Computer) Working(usb Usb) {
usb.Start()
usb.Stop()
}
func main() {
phone := Phone{}
camera := Camera{}
computer := Computer{}
computer.Working(phone)
computer.Working(camera)
}
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
}
//让Camera 实现 Usb接口的方法
func (c Camera) Start() {
fmt.Println("相机开始工作。。。")
}
func (c Camera) Stop() {
fmt.Println("相机停止工作。。。")
}
func main() {
//定义一个Usb接口数组,可以存放Phone和Camera的结构体变量
//这里就体现出多态数组
var usbArr [3]Usb
usbArr[0] = Phone{"vivo"}
usbArr[1] = Phone{"小米"}
usbArr[2] = Camera{"尼康"}
fmt.Println(usbArr)
}
欢迎大家的意见和交流
email: li_mingxie@163.com