go语言支持多变量同时赋值或者初始化,这是一个很方便的特性。它也允许使用:=操作符同时声明部分新变量,并且给已有变量赋值,这会带来一些需要注意的问题,一不小心就产生bug。...a, b := 1, 2
b, c := 3, 4
fmt.Println(a, b, c)
}
这里“b, c:= 3, 4”语句是给已有变量b赋值,同时把一个新变量c初始化为4,因此程序的输出结果是...){
a, b := 1, 2
if true {
b, c := 3, 4
fmt.Println(b, c)
}
fmt.Println(a, b)
}
这个程序输出的结果是...:
3 4
1 2
说明"b, c := 3, 4"语句是初始化了两个新的变量,其中b和外部变量b重名。...这个问题还是挺容易遇到的,新手可能不知道,而老手也可能会不留神给忽略了,结果产生bug。如果能有编译警告就好一些,但是还不清楚有没有这样的编译选项。