package main import "fmt" // 定义接口 type USB interface { Name() string Connect() } // 定义手机usb type PhoneConnecter struct { name string } // 实现Name func (pc PhoneConnecter) Name() string { return pc.name } //实现Connect func (pc PhoneConnecter) Connect() { fmt.Println("正在连接:", pc.name) } // 关闭usb连接(只能传进USB) func Disconnect(usb USB) { if pc, is_ok := usb.(PhoneConnecter); is_ok { fmt.Println("关闭连接:", pc.name) } else { fmt.Println("关闭连接:未知设备") } } // 关闭usb连接(使用interface{}可以传进任何类型,就像是Object) func Disconnect2(usb interface{}) { switch v := usb.(type) { case PhoneConnecter: fmt.Println("关闭连接:", v.name) default: fmt.Println("关闭连接:未知设备") } } func main() { // 方法一 var usb USB usb = PhoneConnecter{"手机USB"} usb.Connect() Disconnect(usb) // 方法二 usb2 := PhoneConnecter{"手机USB2"} usb2.Connect() Disconnect(usb2) Disconnect2("我是冒充的接口") }
输出:
正在连接: 手机USB
关闭连接: 手机USB
正在连接: 手机USB2
关闭连接: 手机USB2
关闭连接:未知设备