类型断言 x.(T) 其实就是判断 T 是否实现了 x 接口,如果实现了,就把 x 接口类型具体化为 T 类型;而 x.(type) 这种方式的类型断言,就只能和 switch 搭配使用,因为它需要和多种类型比较判断,以确定其具体类型。
package main
import (
"fmt"
)
// 断言 只有interface 才能使用断言
func duanyan(args... interface{}){
for index,value := range args {
// type 只能与switch配合使用
switch value.(type) {
case int:
fmt.Println(index,"int")
case float32:
fmt.Println(index,"float32")
case string:
fmt.Println(index,"string")
case *stu:
fmt.Println(index,"*stu")
case stu:
fmt.Println(index,"stu")
default:
fmt.Println(index,"default")
}
}
}
type stu struct {
}
func main() {
var x interface{}
var b2 float32 = 1.1
var a string = "haha"
stu1 := stu{}
stu2 := &stu{}
duanyan(x,b2,a,stu1,stu2)
}
运行结果