Go Vet 常见warning总结

2017-11-10  本文已影响0人  风千寻艾

go vet是一个用于检查Go语言源码中静态错误的简单工具,消灭go vet扫描出的静态错误,有利于提高代码质量和养成良好的编码习惯,常见go vet错误总结如下:

  1. passes lock by value …

不能传递锁,否则可能导致死锁,如下

func createTest(message chan []byte, lock sync.Mutex){
    ...
}

应将sync.Mutex改为指针* sync.Mutex

  1. … not compatible with reflect.StructTag.Get
type Parameters struct {
    Unit        int `json:"test_unit"`
    MaxInstance int `json:"max_instance",omitempty`
    MinInstance int `json:"min_instance",omitempty`
}

应改为json:"max_instance,omitempty"

type LoggerConfig struct {
    Level string "level"
    File  string "file"
}

在不影响功能的前提下建议将tag改为pair形式,如:

Level string `json:"level"`
  1. 关于print
    fmt.Errorf("write failed: %v ", err)
    return 
  1. panic会显示抛出异常(相当于java中的throw),panic后的代码为dead code
    if err != nil {
        panic("xxx failed")
        return
    }

如上所示,panic后一行return为dead code

上一篇 下一篇

猜你喜欢

热点阅读