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

Go中的覆盖范围

Go中的覆盖范围

Go
白猪掌柜的 2023-05-22 17:40:46
我实际上是新手,我无法找到如何覆盖 Go 中变量的范围考虑这个...package mainimport (    "fmt")var x = 10var a int = 10func main() {    var a int = 20    fmt.Println(a)}当我运行它时,输出为 20,这意味着它实际上打印了局部范围变量如何在主函数中显示全局变量“a”
查看完整描述

1 回答

?
守着一只汪

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

你在做什么叫做“变量阴影”。如果你想访问全局变量,唯一的选择就是不隐藏它!


var a int = 10


func main() {

    var localA int = 20

    fmt.Println(a) // 10

    fmt.Println(localA) // 20

}

当然,您可以在隐藏之前将全局值保存在不同的局部变量中。我无法想象这什么时候真正有用:


var a int = 10


func main() {

    globalA := a

    var a int = 20

    fmt.Println(a) // 20

    fmt.Println(globalA) // 10

}


查看完整回答
反对 回复 2023-05-22
  • 1 回答
  • 0 关注
  • 70 浏览
慕课专栏
更多

添加回答

举报

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