golang race && vet 工具

竞争检测

参考代码

package main
import (
  "fmt"
  "sync"
)
func main() {
  wg := sync.WaitGroup{}
  wg.Add(5)
  for i := 0; i < 5; i++ {
    // go func(i int) {
    //  defer wg.Done()
    //  fmt.Println("index:", i)
    // }(i)
    go func() {
      defer wg.Done()
      fmt.Println("index:", i)
    }()
  }
  wg.Wait()
}

race 工具使用

go run --race main.go

效果

 

 

vet 工具使用

 
go vet main.go

 

 

说明

一个比较好的习惯是在写代码的时候就包含vet (可以方便ci阶段进行处理),参考Makefile,因为race 是在运行阶段检测的,vet 就会比较方便
但是注意vet并不是能解决所有问题,当然如果使用vscode 同时安装了推荐的golang 工具,一些常见的问题会自动提示的(内置调用了vet等工具)

 
all:  vet
vet: 
  go vet ./...

参考资料

https://golang.org/doc/articles/race_detector.html
https://golang.org/cmd/vet/

posted on 2020-12-03 17:33  荣锋亮  阅读(483)  评论(0编辑  收藏  举报

导航