报告 for range 循环内部的冗余变量隐藏,例如 x := x,它之前被用于捕获 Goroutine 或闭包的循环变量。
从 Go 1.22 开始,每次 for range 迭代都使用一个新的循环变量。 因此,额外的 x := x 赋值不再改变行为,而且可以移除。
示例:
for _, x := range xs {
x := x
go func() { done <- x }()
}
为了简化代码,请使用移除不必要的声明快速修复。
在应用快速修复后:
for _, x := range xs {
go func() { done <- x }()
}