为了账号安全,请及时绑定邮箱和手机立即绑定

golang中的词法范围?

golang中的词法范围?

Go
慕容森 2021-09-13 15:55:22
我不太明白为什么a最后不是 2:func main (){    z := 4    if true {        z := 2        fmt.Println(z)    }    fmt.Println(z) // prints 4}
查看完整描述

2 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

z越来越阴影了。更改:=为=,它将起作用。


func main (){

    z := 4

    if true {

        z = 2

        fmt.Println(z)

    }

    fmt.Println(z) // prints 2

}

if 语句有自己的作用域,当您使用时,:=您声明了一个新变量并隐藏了旧变量。


查看完整回答
反对 回复 2021-09-13
?
守着一只汪

TA贡献1872条经验 获得超3个赞

这甚至无法编译(我正在回答问题的未编辑版本)。


你必须使用;而不是,:


func main(){

  a := 0

  for i := 0; i < 10; i++ {

    a += 5

  }

  fmt.Println(a) // prints 50

}


查看完整回答
反对 回复 2021-09-13
  • 2 回答
  • 0 关注
  • 194 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信