Linter, который проверяет, что все поля явно заданы при инициализации структуры - PullRequest
0 голосов
/ 03 января 2019

Я хочу иметь статический assert или linter для моего кода go, который проверяет, что я - по ошибке - не инициализирую структуры в моем конфигурационном файле с значениями по умолчанию для любого поля. Я хочу, чтобы все было установлено явно.

Есть ли способ достичь этого?

РЕДАКТИРОВАТЬ: Уточненный вопрос.

1 Ответ

0 голосов
/ 03 января 2019

Проверьте пакет валидатора. 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
}
...