首页 > 解决方案 > 检查所有字段是否在结构初始化中显式设置的 Linter

问题描述

我想为我的 go 代码设置一个静态断言或 linter,以检查我是否 - 错误地 - 使用任何字段的默认值初始化配置文件中的结构。我希望一切都明确设置。

有没有办法做到这一点?

编辑:澄清的问题。

标签: gostatic-analysis

解决方案


查看验证器包。 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
}

推荐阅读