golang中的词法范围?

我不太明白为什么a最后不是 2:


func main (){

    z := 4

    if true {

        z := 2

        fmt.Println(z)

    }

    fmt.Println(z) // prints 4

}


慕容森
浏览 196回答 2
2回答

青春有我

z越来越阴影了。更改:=为=,它将起作用。func main (){    z := 4    if true {        z = 2        fmt.Println(z)    }    fmt.Println(z) // prints 2}if 语句有自己的作用域,当您使用时,:=您声明了一个新变量并隐藏了旧变量。

守着一只汪

这甚至无法编译(我正在回答问题的未编辑版本)。你必须使用;而不是,:func main(){&nbsp; a := 0&nbsp; for i := 0; i < 10; i++ {&nbsp; &nbsp; a += 5&nbsp; }&nbsp; fmt.Println(a) // prints 50}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go