Go 的基本型別與預設推斷型別

Go 的數值型別把「位寬」寫進名字裡,不像 C 依平台浮動;而型別推斷時每個字面量有固定的預設型別,不會挑最小夠用的那個。

型別清單

  • 整數:intuintuintptrint8/16/32/64uint8/16/32/64
  • 浮點數:float32float64
  • 複數:complex64complex128
  • 其他:stringbool

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 宣告變數的四種寫法