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) // 识别为相机
}