2
我不明白爲什麼a
不是2月末:golang的詞彙範圍?
func main(){
z := 4
if true {
z := 2
fmt.Println(z)
}
fmt.Println(z) // prints 4
}
我不明白爲什麼a
不是2月末:golang的詞彙範圍?
func main(){
z := 4
if true {
z := 2
fmt.Println(z)
}
fmt.Println(z) // prints 4
}
z
越來越shadowed。將:=
更改爲=
,它將起作用。
func main(){
z := 4
if true {
z = 2
fmt.Println(z)
}
fmt.Println(z) // prints 2
}
if語句都有自己的範圍,當你使用:=
你宣佈一個新的變量和陰影舊的。
這還不編譯(我回答這個問題的未經編輯的版本)。
你必須使用;
而不是,
:
func main(){
a := 0
for i := 0; i < 10; i++ {
a += 5
}
fmt.Println(a) // prints 50
}
[適用於我](https://play.golang.org/p/lZFMDGF_M_)。 – 2015-02-06 23:10:52
我已更改示例以更好地解釋問題。 – paulkon 2015-02-06 23:26:34