Go 语言中数据类型的判断,本文介绍三种方法。
方法一:使用i.(type)结合空接口(interface{})
func main() { v1 := "中国你好" v2 := 20 var v3 byte = 65 fmt.Printf("v1的数据类型为:%s\n", checkType(v1)) fmt.Printf("v2的数据类型为:%s\n", checkType(v2)) fmt.Printf("v3的数据类型为:%s\n", checkType(v3))}func checkType(i interface{}) string{ switch i.(type) { case string : return "string" case int : return "int" case byte : return "byte" } return ""}
输出:
v1的数据类型为:stringv2的数据类型为:intv3的数据类型为:byte
注意:i.(type) 只能在switch中使用
方法二:使用fmt中的格式化输出%T
func main() { v1 := "中国你好" v2 := 20 var v3 byte = 65 fmt.Printf("v1的数据类型为:%T\n", v1) fmt.Printf("v2的数据类型为:%T\n", v2) fmt.Printf("v2的数据类型为:%T\n", v3)}
输出:
v1的数据类型为:stringv2的数据类型为:intv2的数据类型为:uint8
说明:byte与uint8是同一类型
方法三:使用reflect反射中的TypeOf函数
func main() { v1 := "中国你好" v2 := 20 var v3 byte = 65 fmt.Printf("v1的数据类型为:%v\n", reflect.TypeOf(v1)) fmt.Printf("v2的数据类型为:%v\n", reflect.TypeOf(v2)) fmt.Printf("v3的数据类型为:%v\n", reflect.TypeOf(v3))}
输出:
v1的数据类型为:stringv2的数据类型为:intv2的数据类型为:uint8