一 接口的引入
usb 插槽就是现实中的接口。
可以把手机、相机、u盘都插在 usb 插槽上,而不同担心哪个插槽是专门插哪个的,原因是做 usb 插槽的厂家和各种设备的厂家都遵守了统一的规定,包括尺寸,排线等等。
二 接口的快速入门
1 要求
用代码实现上面的 usb 插槽场景。
2 代码
package main
import (
"fmt"
)
// 声明/定义一个接口
type Usb interface {
// 声明了两个没有实现的方法
Start()
Stop()
}
// 声明/定义一个接口
type Usb2 interface {
// 声明了两个没有实现的方法
Start()
Stop()
Test()
}
type Phone struct {
}
// 让 Phone 实现 Usb 接口的方法
func (p Phone) Start() {
fmt.Println("手机开始工作")
}
func (p Phone) Stop() {
fmt.Println("手机停止工作")
}
type Camera struct {
}
// 让 Camera 实现 Usb接口的方法
func (c Camera) Start() {
fmt.Println("相机开始工作")
}
func (c Camera) Stop() {
fmt.Println("相机停止工作")
}
// 计算机
type Computer struct {
}
// 编写一个方法 Working 方法,接收一个 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)
}
3 测试
手机开始工作
手机停止工作
相机开始工作
相机停止工作