报告遍历 strings.Split 或 strings.Fields 的循环。
这些函数会分配一个仅用于迭代的子字符串切片。 在 Go 1.24 及更高版本中,strings.SplitSeq 和 strings.FieldsSeq 返回的迭代器可以直接生成每个片段,而无需分配中间切片。
示例:
func CountCSV(s string) int {
n := 0
for p := range strings.SplitSeq(s, ",") {
if p != "" {
n++
}
}
return n
}
要修正代码,请使用将 Split 替换为 SplitSeq 快速修复。
在应用快速修复后:
func CountWords(s string) int {
n := 0
for _, w := range strings.Fields(s) {
_ = w
n++
}
return n
}
示例:
func CountWords(s string) int {
n := 0
for w := range strings.FieldsSeq(s) {
_ = w
n++
}
return n
}
要修正代码,请使用将 Fields 替换 FieldsSeq 快速修复。
在应用快速修复后:
n := 0
for w := range strings.FieldsSeq(s) {
_ = w
n++
}