Published: 20 Dec 2018 › Updated: 20 Dec 2018
Golang面向对象编程-多态(使用interface实现)-快速入门
USB接口就是现实中的接口:
你可以把手机,相机,u盘都插在usb插槽上。
package main
import "fmt"
//define a interface
type Usb interface {
//声明了两个没有实现的方法;
Start()
Stop()
}
type Phone struct {
}
type Camera struct {
}
//让Phone结构体实现Usb接口中定义的方法:
func (p Phone) Start() {
fmt.Println("手机开始工作...")
}
func (p Phone) Stop() {
fmt.Println("手机停止工作...")
}
//让Camera结构体实现Usb接口中定义的方法:
func (p Camera) Start() {
fmt.Println("相机开始工作...")
}
func (p Camera) Stop() {
fmt.Println("相机停止工作...")
}
type Computer struct {
}
// 为Computer编写一个方法:接收一个Usb接口类型变量;
// 只要是实现了Usb接口(所谓实现Usb接口,就是实现了Usb接口声明的所有方法)
func (c Computer) Working(usb Usb) {
//通过Usb结构变量来调用Start和Stop方法;
usb.Start()
usb.Stop()
}
func main() {
//测试
// 先创建结构体变量;
computer := Computer{}
phone := Phone{}
camera := Camera{}
//关键点
computer.Working(phone) // 识别为手机
computer.Working(camera) // 识别为相机
}
Leave Golang面向对象编程-多态(使用interface实现)-快速入门 to:
Read more #golang posts
Best Posts From sslinux
We have not curated any of sslinux's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.
More Posts From sslinux
- Good.Luck.Charlie.S01E01-查莉成长日记S01E01(下)
- Good.Luck.Charlie.S01E01-查莉成长日记S01E01(上)
- 排错:centos7 未启用swap导致内存使用率过高。
- how-to-build-mysql-from-source-code-on-centos7
- Sword Fish
- 传销不挣钱为啥还有这么多人参与?美国大选为啥总是两党之争?李永乐老师讲一美元拍卖陷阱
- Ariana Grande - 7 rings(youtube music)
- 《流浪地球》科普答疑:人们为什么要去比邻星?太阳会爆炸吗?李永乐老师告诉你
- 2月为啥只有28天?竟然与凯撒和屋大维有关!李永乐老师讲公历演化(2018最新)
- 1+2+3+4+...=-1_12?李永乐老师讲黎曼猜想(1)
- 如何改變自己或別人?
- 《流浪地球》最大的硬伤:洛希极限竟是错的!地球真会被木星撕碎吗?
- 流浪地球中的“引力弹弓”效应是啥?李永乐老师教你如何逃出太阳系
- 比特币交易如何防伪?私钥公钥地址啥意思?李永乐老师讲比特币(2)
- Bitcoin and blockchain principle? Mining machine mining ?? Li Yongle teacher speaks bitcoin (1)比特币和区块链啥原理矿机挖矿咋回事李永乐老师讲比特币(1)
- 1米有多长?美国人知道千米和千克吗?李永乐老师讲国际单位制
- 流浪地球(枪版)
- 流浪地球(枪版)_IPFS共享。
- 0.999…=1?数到底是什么?李永乐老师讲数学公理化
- 是“乔峰”还是“萧峰”?《天龙八部》众生相(乔峰篇)