package main
import (
"fmt"
"reflect"
)
type Cat struct {
Name string
Age int
}
func main() {
var allChan chan interface{}
allChan = make(chan interface{}, 10)
cat1 := Cat{Name: "tom", Age: 12}
cat2 := Cat{Name: "jack", Age: 23}
allChan <- cat1
allChan <- cat2
allChan <- 10
allChan <- "hello"
//这里从管道中获取的cat11是一个接口类型,
//通过类型断言,将其转换成为struct类型
cat11 := <- allChan
fmt.Printf("cat11 = %v, %v\n", cat11, reflect.TypeOf(cat11))
//下面这个是错误的
//fmt.Printf("cat11.Name = %v, %v\n", cat11.Name, reflect.TypeOf(cat11))
//类型断言
newcat, ok := cat11.(Cat)
if !ok {
fmt.Println("断言错误...")
return
}
fmt.Printf("cat11.Name = %v, %v\n", newcat.Name, reflect.TypeOf(newcat))
}
golang中类型断言
最新推荐文章于 2023-04-25 16:37:54 发布