package main
import "fmt"
func main() {
var a interface{} = 1
//参与类型断言的变量必须是接口类型,否则编译错误
switch a.(type) {//a.(type)只能写在switch语句中,否则编译错误
case float32:
fmt.Println("变量是float类型")
case int://将匹配这个case
fmt.Println("变量是int类型")
default:
fmt.Println("变量是其它类型")
}
//写法一,安全断言
v1,ok:=a.(int)//断言成功
fmt.Printf("%v,%T,%v,%T",v1,v1,ok,ok)//输出 1,int,true,bool
v2,ok:=a.(*int)//断言失败
fmt.Printf("%v,%T,%v,%T",v2,v2,ok,ok)//输出 <nil>,*int,false,bool
//写法二,非安全断言
v3:=a.(int)//断言成功
fmt.Printf("%v,%T",v3,v3)//输出 1,int
v4:=a.(*int)//断言失败 panic: interface conversion: interface {} is main.User, not *main.User
fmt.Printf("%v,%T",v4,v4)
}
09-10
439

07-27
236
