文章目录
快速上手
一个简单的命令就是go vet [directory]
返回结果大约如下图
$ go vet ./alecthomas/gometalinter/
adjcmartix.go:85: suspect or: char != "" || char != " "
main.go:55: arg usage in Fprint call is a function value, not a function call
resolve.go:161: unreachable code
sparse.go:58: _m might be too small for shift of 32
go vet会检查什么?
在我们日常编写代码的时候, 我们会不时写出一些虽然符合语法逻辑但是不符合自己的想法, 而且会有未预期效果的代码.go vet总结了部分常见的类型并检查, 值得注意的是, 虽然绝大多数时候go vet
检查项都是准确的(错误), 但是仍然需要结合自身想法考虑.
默认情况下,go tool vet
会检索所有类型的错误(相当于-all).我们可以使用选项来指定特定类型
查找所有选项
go tool vet help
对于原子性函数的不寻常使用(atomic)
可以使用go vet -atomic
func main() {
var a int32 = 0
var wg sync.WaitGroup
for i := 0; i < 500; i++ {
wg.Add(1)
go func() {
a = atomic.AddInt32(&a, 1)
wg.Done()
}()
}
wg.Wait()
}
main.go</