funcmain(){ // 案例1 var a interface{} // a 是空接口变量 var point Point = Point{1, 2} a = point // ok var b Point b = a.(Point) // 类型断言:判断 a 是否是指向Point类型的变量;如果是,则转成Point类型并赋给 b 变量,否则报错 fmt.Println(b)
// 案例2 var x interface{} var c float32 = 1.1 x = c // 空接口可以接收任意类型 //y = x.(float64) 运行出现panic,不匹配 y = x.(float32) // 使用类型断言;类型要匹配
// 带检测的类型断言 if y, ok := x.(float32); ok == true{ fmt.Println("convert succeed") fmt.Println(y) }else { fmt.Println("convert fail") }