报告 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 }()
}