请教以下代码中一句: usb.(PhoneConnector) 是何意?有何作用?
源码如下:
package main
import (
"fmt"
)
type USB interface {
Name() string
Connector
}
type Connector interface {
Connect()
}
type PhoneConnector struct {
name string
}
func (pc PhoneConnector) Name() string {
return pc.name
}
func (pc PhoneConnector) Connect() {
fmt.Println("Connect:", pc.name)
}
func main() {
//var a USB
a := PhoneConnector{name: "Huawei-PhoneConnector"}
a.Connect()
Disconnect(a)
}
func Disconnect(usb USB) {
// usb.(PhoneConnector) 这句不明白什么意思?有什么作用
if pc, ok := usb.(PhoneConnector); ok {
fmt.Println("pc is:", pc)
fmt.Println("ok is:", ok)
fmt.Println("Disconnected:", pc.name)
return
}
fmt.Println("Unknown device.")
}
运行结果:
Connect: Huawei-PhoneConnector
pc is: {Huawei-PhoneConnector}
ok is: true
Disconnected: Huawei-PhoneConnector
golang中something.(type)就是类型断言,通常interface使用时需要做类型断言,也就是判断something是否是括号中的type。
这里usb.(PhoneConnector)也就是判断usb是否是PhoneConnector类型