Go 的基本型別與預設推斷型別
Go 的數值型別把「位寬」寫進名字裡,不像 C 依平台浮動;而型別推斷時每個字面量有固定的預設型別,不會挑最小夠用的那個。
型別清單
- 整數:
int、uint、uintptr、int8/16/32/64、uint8/16/32/64 - 浮點數:
float32、float64 - 複數:
complex64、complex128 - 其他:
string、bool
int / uint 的寬度跟著平台(64 位元機器上是 64 bit),其餘都寫死在名字裡。
推斷時的預設型別
var x = 3.2 // x -> float64,不是 float32
var y = 3 + 2i // y -> complex128,不是 complex64
var z = 10 // z -> int想要窄的型別必須明寫:var x float32 = 3.2。
也因為型別固定,Go 不做隱式數值轉換,混算要手動轉:
total / float64(len(x)) // len() 回傳 int,得轉成 float64 才能除相關:Go 宣告變數的四種寫法