类型断言
- 将接口的实现类赋值给接口时的处理方法
var inter interface{}
var ty1 TyTy = TyTy{}
var ty2 TyTy
inter = ty1
ty2 = inter.(TyTy) // 类型推断 inter引用的对象如果可以转化位TyTy 则转化并返回
y := inter.(float32) // 如果不可以 则报错
fmt.Println(inter,ty2,y)
带检查的类型推导
- 利用类型断言,如何避免报panic,使程序继续运行
//待检测的类型断言
if y,ok := inter.(float32);ok { //如果ok为true
fmt.Println("convert success")
fmt.Print("y的类型是 $T",y)
}else{
fmt.Println("convert fail")
}
fmt.Println("end")
switch + 类型断言
总结
类型断言的两种用法
element是一般类型的接口,T是目标类型,value是T类型的变量,ok是bool类型
value = element.(T) //将element转化为T,成功则返回并赋值给value,失败报错(panic)并终止程序
value,ok = element.(T) //尝试将element转化为T 成功则给ok赋值为true,并将转化结果赋值给value
失败则给ok赋值为false,value不进行赋值,程序继续运行