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 或函式呼叫的結果——它必須在編譯期就算得出來。