你的
continue
只是通过循环运行回来,没有其他代码取决于的结果
HasPrefix
(a
bool
),所以实际上你只是在浪费那个电话。纯函数是一个没有副作用的函数,所以linter知道在这种情况下,条件函数可以完全删除,不会有任何区别。
如果您添加
else
在if语句之后,您可以看到lint警告消失(在我的机器上,错误消息略有不同,但可能是staticcheck的不同版本)。
for _, key := range []string{"my-foo", "bar", "baz"} {
if strings.HasPrefix(key, "my") {
continue
} else {
fmt.Println("hello")
}
}
或者,如果您像在第一个版本中那样在支票中添加了其他内容:
for _, key := range []string{"my-foo", "bar", "baz"} {
if strings.HasPrefix(key, "my") {
fmt.Println("yep")
continue
}
}
这同样适用于使用变量存储的结果的第二个版本
HasPrefix
。