先決條件,您應(yīng)該學(xué)習(xí)了:Golang數(shù)據(jù)類型
當(dāng)我們將一種數(shù)據(jù)類型的值分配給另一種數(shù)據(jù)類型時(shí),就會(huì)發(fā)生類型轉(zhuǎn)換。諸如C / C ++,Java之類的靜態(tài)類型語(yǔ)言提供了對(duì)隱式類型轉(zhuǎn)換的支持,但是Golang有所不同,因?yàn)榧词箶?shù)據(jù)類型兼容,它也不支持自動(dòng)類型轉(zhuǎn)換或隱式類型轉(zhuǎn)換。原因是Golang的強(qiáng)類型系統(tǒng)不允許這樣做。對(duì)于類型轉(zhuǎn)換,必須執(zhí)行顯式轉(zhuǎn)換。
Golang 如何進(jìn)行類型轉(zhuǎn)換?
如果您需要利用數(shù)據(jù)類型層次結(jié)構(gòu)的某些特征,那么我們必須將實(shí)體從一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型。將值val轉(zhuǎn)換為類型T的一般語(yǔ)法是T(val)。
var nhooo1 int = 845 // 顯式類型轉(zhuǎn)換 var nhooo2 float64 = float64(nhooo1) var nhooo3 int64 = int64(nhooo1) var nhooo4 uint = uint(nhooo1)
//計(jì)算平均值 package main import "fmt" func main() { var totalsum int = 446 var number int = 23 var avg float32 // 顯式類型轉(zhuǎn)換 avg = float32(totalsum) / float32(number) // 顯示結(jié)果 fmt.Printf("平均值 = %f\n", avg) }
輸出:
平均值 = 19.391304
注意:由于Golang具有強(qiáng)大的類型系統(tǒng),因此不允許在表達(dá)式中混合使用數(shù)字類型(例如加,減,乘,除等),并且不允許在兩個(gè)混合類型之間執(zhí)行賦值類型。
var nhooo1 int64 = 875 //它會(huì)在編譯時(shí)拋出錯(cuò)誤給我們 //因?yàn)檎趫?zhí)行混合類型,例如把int64作為int類型 var nhooo2 int = nhooo1 var nhooo3 int = 100 //它拋出編譯時(shí)錯(cuò)誤 //這是無(wú)效操作 //因?yàn)轭愋褪腔旌系?nbsp;int64 和 int 相加 var addition = nhooo1 + nhooo3