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

Go:声明一个新变量并覆盖来自更高范围的变量,如何?

Go:声明一个新变量并覆盖来自更高范围的变量,如何?

Go
qq_笑_17 2021-06-15 17:36:38
我在任何地方都找不到答案,所以情况是这样的:// err has not yet been declared hereglobalVar := "string"if globalVar == "string" {    globalVar, err := doSomethingWithString()    if err != nil {        // error handling    }}第二个globalVar声明:=在使用“=”时和“=”时都会出现错误:用:=它说globalVar declared and not used是因为现在 globalVar 是内部作用域中的一个新变量。用=它说undefined err是因为它还没有被宣布。因此,基本上,应该有一种方法来定义之间的差别=和:=有关声明的左侧每个变量。我看到了两种可能的解决方案,在我看来它们都同样丑陋:// err has not yet been declared hereglobalVar := "string"if globalVar == "string" {    globalVar2, err := doSomethingWithString()    if err != nil {        // error handling    }    globalVar = globalVar2}或者globalVar := "string"var err errorif globalVar == "string" {    globalVar, err = doSomethingWithString()    if err != nil {        // error handling    }}我是否必须使用这些变通方法之一,或者是否有正确的方法来实现我所需要的?第二种解决方案看起来最不丑,但是如果有很多变量只需要在 if 作用域中,那么这些变量在作用域之后不会被删除,并且会持久化整个外部作用域。所以在我看来,第一个解决方案似乎是最好的。但我想听听其他人如何解决这种情况...
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 186 浏览
慕课专栏
更多

添加回答

举报

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