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)