Go 語言中數(shù)據(jù)類型的判斷,本文介紹三種方法。
方法一:使用i.(type)結(jié)合空接口(interface{})
專注于為中小企業(yè)提供成都網(wǎng)站制作、成都網(wǎng)站建設服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)武寧免費做網(wǎng)站提供優(yōu)質(zhì)的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
func main() {
v1 := "中國你好"
v2 := 20
var v3 byte = 65
fmt.Printf("v1的數(shù)據(jù)類型為:%s\n", checkType(v1))
fmt.Printf("v2的數(shù)據(jù)類型為:%s\n", checkType(v2))
fmt.Printf("v3的數(shù)據(jù)類型為:%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的數(shù)據(jù)類型為:string
v2的數(shù)據(jù)類型為:int
v3的數(shù)據(jù)類型為:byte
注意:i.(type) 只能在switch中使用
方法二:使用fmt中的格式化輸出%T
func main() {
v1 := "中國你好"
v2 := 20
var v3 byte = 65
fmt.Printf("v1的數(shù)據(jù)類型為:%T\n", v1)
fmt.Printf("v2的數(shù)據(jù)類型為:%T\n", v2)
fmt.Printf("v2的數(shù)據(jù)類型為:%T\n", v3)
}
輸出:
v1的數(shù)據(jù)類型為:string
v2的數(shù)據(jù)類型為:int
v2的數(shù)據(jù)類型為:uint8
說明:byte與uint8是同一類型
方法三:使用reflect反射中的TypeOf函數(shù)
func main() {
v1 := "中國你好"
v2 := 20
var v3 byte = 65
fmt.Printf("v1的數(shù)據(jù)類型為:%v\n", reflect.TypeOf(v1))
fmt.Printf("v2的數(shù)據(jù)類型為:%v\n", reflect.TypeOf(v2))
fmt.Printf("v3的數(shù)據(jù)類型為:%v\n", reflect.TypeOf(v3))
}
輸出:
v1的數(shù)據(jù)類型為:string
v2的數(shù)據(jù)類型為:int
v2的數(shù)據(jù)類型為:uint8