我不太明白为什么a
最后不是2:
func main (){
z := 4
if true {
z := 2
fmt.Println(z)
}
fmt.Println(z) // prints 4
}
答案 0 :(得分:11)
z
正在获得shadowed。将:=
更改为=
即可。
func main (){
z := 4
if true {
z = 2
fmt.Println(z)
}
fmt.Println(z) // prints 2
}
if语句有自己的范围,当你使用:=
时,你声明了一个新变量,并将旧变量隐藏起来。
答案 1 :(得分:0)
这甚至没有编译(我正在回答问题的未经编辑的版本)。
您必须使用;
代替,
:
func main(){
a := 0
for i := 0; i < 10; i++ {
a += 5
}
fmt.Println(a) // prints 50
}