报告可被替换为 slices.Backward 的对切片的反向索引循环。
在 Go 1.23 及更高版本中,slices.Backward 会返回从最后一个元素到第一个元素对切片进行遍历的迭代器。 这样便无需手动进行索引处理,并有助于避免差一错误。
示例:
func ReverseInPlace(s []int) []int {
out := make([]int, 0, len(s))
for i := len(s) - 1; i >= 0; i-- {
out = append(out, s[i])
}
return out
}
要修正代码,请使用替换为 range slices.Backward(s) 快速修复。
在应用快速修复后:
func ReverseInPlace(s []int) []int {
out := make([]int, 0, len(s))
for _, v := range slices.Backward(s) {
out = append(out, v)
}
return out
}