go-staticcheck
发出警告:返回值被忽略.此问题仅在循环和特定条件内出现.让我澄清这一点:
for _, key := range []string{"my-foo", "bar", "baz"} {
if strings.HasPrefix(key, "my") {
fmt.Println(true)
}
}
到目前为止,林特没有抛出一个问题.但当我go 掉fmt
而使用continue
时,它引发了问题:
for _, key := range []string{"my-foo", "bar", "baz"} {
if strings.HasPrefix(key, "my") {
continue
}
}
HasPrefix是纯函数,但其返回值被忽略
这个问题在strings.Contains()
版本中不会出现.它仅与strings.HasPrefix()
一起出现,并且仅当在循环中使用continue
时出现.
我也试过这样做:
for _, key := range []string{"my-foo", "bar", "baz"} {
hasMy := strings.HasPrefix(key, "my")
if hasMy {
continue
}
}
现在,它将两个问题联系在一起:
Hasmy的此值从未使用过
HasPrefix是纯函数,但其返回值被忽略
编辑:
我发现很难忽视,因此粘贴在这里作为self 参考.以防我们需要忽略类似的短绒问题.
for _, key := range []string{"my-foo", "bar", "baz"} {
//lint:ignore SA4017 // ignore this
if strings.HasPrefix(key, "my") {
continue
}
}
注://lint
之间没有空格.