我希望我的go代码有一个静态Assert或linter来检查我没有-错误地-用 default values 初始化配置文件中的结构体,我希望所有的东西都显式地设置。有没有办法做到这一点?编辑:澄清问题。
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 }
o2g1uqev2#
您可以使用https://github.com/GaijinEntertainment/go-exhaustruct。在golangci-lint中,这个linter被称为exhaustruct,默认情况下是禁用的(参见文档)。
golangci-lint
exhaustruct
2条答案
按热度按时间0yg35tkg1#
查看验证程序包。https://gopkg.in/go-playground/validator.v9
我们在代码中广泛使用它来验证结构体。
o2g1uqev2#
您可以使用https://github.com/GaijinEntertainment/go-exhaustruct。
在
golangci-lint
中,这个linter被称为exhaustruct
,默认情况下是禁用的(参见文档)。