Go 的 if 可以先宣告變數且作用域涵蓋 else
if的判斷式前可以放一句初始化陳述句,用;隔開。該變數的作用域是整條 if-else 鏈,出了鏈就消失。
if v := 10; false {
// v 在這裡看得到
} else {
fmt.Println(v) // 10,else 也看得到
}
// 這裡 v 已經不存在典型用途是把「取值 + 檢查」綁在一起,讓只服務這個判斷的變數不外洩到函式作用域:
if err := doSomething(); err != nil {
return err
}switch 也吃同一套(switch v := f(); v {)。