Go语言 检查所有字段是否在结构初始化中显式设置的Linter

fiei3ece  于 2023-02-17  发布在  Go
关注(0)|答案(2)|浏览(93)

我希望我的go代码有一个静态Assert或linter来检查我没有-错误地-用 default values 初始化配置文件中的结构体,我希望所有的东西都显式地设置。
有没有办法做到这一点?
编辑:澄清问题。

0yg35tkg

0yg35tkg1#

查看验证程序包。https://gopkg.in/go-playground/validator.v9
我们在代码中广泛使用它来验证结构体。

type Config struct {
  Url      string  `validate:"required"`
  MaxHops  int     `validate:"omitempty,min=0"`
  MaxTerms int     `validate:"omitempty,min=0"`
  MaxCost  float64 `validate:"omitempty,min=0"`
}

func Init(cfg *Config) error {
  if err := validator.New().Struct(cfg); err != nil {
    return errors.Wrap(err, "error in config")
  }
  //do something
}
o2g1uqev

o2g1uqev2#

您可以使用https://github.com/GaijinEntertainment/go-exhaustruct
golangci-lint中,这个linter被称为exhaustruct,默认情况下是禁用的(参见文档)。

相关问题