平行赋值中遇到的变量作用域问题

var a int
a, b := 1,2

像这样的赋值是允许的,但是当出现如下情况时:

var a int
for i:=0; i<3; i++ {
    a, err := f()
}
// 在这里得不到for代码块里面的a

一不留神,坑就来了。for 代码块里面的a是for代码块的本地变量,而不是for代码库外面的全局变量

var a int
for i:=0; i<3; i++ {
    var err error
    a, b = f() // 此时a是全局变量
}

你可能感兴趣的:(go)