Golang中存在4種類型轉(zhuǎn)換,分別是:斷言、顯式、隱式、強(qiáng)制。下面我將一一介紹每種轉(zhuǎn)換使用場(chǎng)景和方法
一、斷言類型轉(zhuǎn)換
主要是判斷變量是否可以轉(zhuǎn)換成某一類型。斷言主要用于變量是interface{}類型(接口類型)的情況,且變量值必須與要轉(zhuǎn)換類型一致??梢约?xì)分為2種使用方式
- 普通斷言
- switch斷言
1.1 普通斷言示例
// 定義一個(gè)接口類型變量
var userInfo interface{}
// 定義一個(gè)map類型變量
userInfoNew := map[string]int{
"phoneNum": 123456,
"age": 18,
}
// 由于interface{}可以接收任何類型變量,因此可以將map類型變量賦值給它
userInfo = userInfoNew
// 此時(shí)userInfo變量類型仍為interface{},但變量值是map類型,若想獲取變量值需采用斷言進(jìn)行類型轉(zhuǎn)換
res, _ := userInfo.(map[string]int)
fmt.Println("age:", res["age"])
輸出結(jié)果:
age: 18
1.2 switch斷言示例
var userInfo interface{} = "user info"
switch val := userInfo.(type) {
case float32:
fmt.Printf("userInfo變量的類型為%T userInfo變量的值為%v\n", val, val)
case float64:
fmt.Printf("userInfo變量的類型為%T userInfo變量的值為%v\n", val, val)
case int:
fmt.Printf("userInfo變量的類型為%T userInfo變量的值為%v\n", val, val)
case bool:
fmt.Printf("userInfo變量的類型為%T userInfo變量的值為%v\n", val, val)
case string:
fmt.Printf("userInfo變量的類型為%T userInfo變量的值為%v\n", val, val)
default:
fmt.Println("非已知類型")
}
輸出結(jié)果:
userInfo變量的類型為string userInfo變量的值為user info
二、顯示類型轉(zhuǎn)換
細(xì)分為2種:
- 表達(dá)式格式為:
T(x)
,T為變量x要轉(zhuǎn)換的最終類型。適用整型與浮點(diǎn)型互轉(zhuǎn),字節(jié)數(shù)組與字符串類型互轉(zhuǎn),結(jié)構(gòu)體類型轉(zhuǎn)換接口類型(反之不行) - 使用strconv包提供的方法
1)strconv.Atoi():將字符串類型轉(zhuǎn)成整數(shù)
2)strconv.Itoa():將整數(shù)轉(zhuǎn)成字符串類型
三、隱式類型轉(zhuǎn)換
通常是程序內(nèi)部自動(dòng)轉(zhuǎn)換,對(duì)開(kāi)發(fā)人員無(wú)感知文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-730167.html
四、強(qiáng)制類型轉(zhuǎn)換
這個(gè)暫時(shí)未研究文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-730167.html
到了這里,關(guān)于Golang中的類型轉(zhuǎn)換介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!