Go 宣告變數的四種寫法

Go 的變數宣告一律以 var 為基礎,型別寫在變數名後面;函式內可用 := 省略 var 與型別。

var x int             // 只宣告型別,值為該型別的零值(int → 0)
var x = 10            // 只給值,型別自動推斷
var x, y = 10, 20     // 一次宣告多個
a, b := true, 10      // 短變數宣告,只能用在函式內

四種寫法的差別只在「型別」與「初始值」給不給:

寫法型別初始值
var x int明寫零值
var x = 10推斷
var x int = 10明寫
x := 10推斷給(函式內限定)

型別後置是刻意的設計:宣告從左到右讀成「變數 x,型別是 int」,複雜型別(函式、slice of map)比 C 系的型別前置好讀。

const 不能用 :=

常數用 const 宣告,而且不能用短變數宣告

const Pi = 3.14
const Greeting string = "hi"
// Pi := 3.14   ✗ := 只能宣告變數

:= 的語意就是「宣告一個變數並推斷型別」,常數不是變數,所以借不到這個語法。常數也只能是基本型別的值(數值、字串、bool),不能是 slice、map 或函式呼叫的結果——它必須在編譯期就算得出來。

相關:Go 的基本型別與預設推斷型別Go 不允許宣告了卻沒用到的變數