【go】go代码疑惑,usb.(PhoneConnector) 是何意?

请教以下代码中一句: 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类型

判断当前接口对象是否属于括号里的类
属于当前接口的对象.(类)

类型断言。

断言,判断类型的

对象的类型断言,类似于php的instanceof语法

type assertion -> 类型断言,https://golang.org/doc/effective_go.html#interface_conversions

回答

以上是 【go】go代码疑惑,usb.(PhoneConnector) 是何意? 的全部内容, 来源链接: www.h5w3.com/115180.html

回到顶部