package main
import ("fmt")
type InterfaceA interface{
AA()
}
type InterfaceB interface {
BB()
}
// Won 实现了接口 AA 和 BB
type Won struct{}
func (w Won) AA() {
fmt.Println("AA")
}
func (w Won) BB() {
fmt.Println("BB")
}
func info(ininterface{}) {
//必须经过 类型断言,才能调用相应的方法
v, ok := in.(InterfaceA) //必须进行相应的断言才能进行函数的调用,不然编译器不知道是什么具体类型if ok {
v.AA()
} else {
fmt.Println("assert fail")
}
}func main() {
var x InterfaceA = Won{}
info(x)
var y Won = Won{}
info(y)
}
CASE 四
switch与类型断言的结合使用还是比较方便的,如下所示,
package main
import ("fmt")
type Element interface{}
func main() {
var e Element = 100switchvalue := e.(type) {
caseint:
fmt.Println("int", value)
casestring:
fmt.Println("string", value)
default:
fmt.Println("unknown", value)
}
}