..

assert type

遇到的代码如下

// RPCServiceID returns the Service ID for the given RPCAPI object.
func RPCServiceID(rpcSvc interface{}) string {
	switch rpcSvc.(type) {
	case *ClusterRPCAPI:
		return "Cluster"
	case *PinTrackerRPCAPI:
		return "PinTracker"
	case *IPFSConnectorRPCAPI:
		return "IPFSConnector"
	case *ConsensusRPCAPI:
		return "Consensus"
	case *PeerMonitorRPCAPI:
		return "PeerMonitor"
	default:
		return ""
	}
}

其中 rpcSvc.(type) 在 golang 中叫做 assert type,我理解就是类型转换的意思。
调用端代码是这样的

cl := &ClusterRPCAPI{c}
RPCServiceID(cl)

其他例子1

var i interface{} = "hello world"

str := i.(string) // 1.接口i是string类型,会将"hello world"赋值给str
fmt.Println(str)

s, ok := i.(string) // 2.接口类型是string,会将"hello world"赋值给s,并且ok=true
fmt.Println(s, ok)