Edited at

goの変数スコープ

More than 3 years have passed since last update.

なんか地味にハマってしまった。

同じ名前の変数を、入れ子になったスコープで新しく定義した時は別参照になるのか…。

package main

var dummy int = 1

func main() {
variable := "outside"
if dummy == 1 {
variable := "inside"
println("variable:", variable)
// variable: inside
}
println("variable:", variable)
// variable: outside
}

もちろん内部スコープから、外側の変数は参照できる。(当たり前だけど)

package main

var dummy int = 1

func main() {
variable := "outside"
if dummy == 1 {
variable = "inside"
println("variable:", variable)
// variable: inside
}
println("variable:", variable)
// variable: inside
}

ん、なんか地味にハマった。名前衝突でエラーにならないのかー。