我无法在任何地方找到答案,所以情况如下:
// err has not yet been declared here
globalVar := "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 here
globalVar := "string"
if globalVar == "string" {
globalVar2, err := doSomethingWithString()
if err != nil {
// error handling
}
globalVar = globalVar2
}
要么
globalVar := "string"
var err error
if globalVar == "string" {
globalVar, err = doSomethingWithString()
if err != nil {
// error handling
}
}
我是否必须使用其中一种解决方法,或者是否有正确的方法来实现我的需求?
第二个解决方案似乎是最不丑的,但是如果在if-scope中只需要很多变量,那么这些变量将不会在作用域之后被删除并持久化整个外部作用域。所以在我看来,第一个解决方案似乎是最好的。
但我想听听别人如何解决这种情况......