Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 检查所有字段是否在结构初始化中显式设置的Linter_Go_Static Analysis - Fatal编程技术网

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

Go 检查所有字段是否在结构初始化中显式设置的Linter,go,static-analysis,Go,Static Analysis,我想为我的go代码提供一个静态断言或linter,用于检查我是否错误地使用任何字段的默认值初始化配置文件中的结构。我希望一切都被明确地设置 有没有办法做到这一点 编辑:澄清问题。查看验证程序包。 我们在代码中广泛使用它来验证结构。 e、 g 这不会告诉您字段值是显式设置为零值还是从未设置。这是真的……在这种情况下,如果不是过度使用,我们有时会使用指针字段。e、 g`type Config struct{Url stringvalidate:“required”MaxHops*intvalida

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

有没有办法做到这一点


编辑:澄清问题。

查看验证程序包。

我们在代码中广泛使用它来验证结构。 e、 g


这不会告诉您字段值是显式设置为零值还是从未设置。这是真的……在这种情况下,如果不是过度使用,我们有时会使用指针字段。e、 g`type Config struct{Url string
validate:“required”
MaxHops*int
validate:“required”
}`但这同样需要额外的代码来验证指针对象。虽然这仍然无法捕获(比如)传递给这些字段的JSON配置。任何字段都可能显式设置为其零值,并且无法通过事后检查字段来确定是否存在这种情况。没有任何东西可以检查结构并告诉您字段值是否显式设置为零值,或者从未设置过。唯一的方法是对这些字段的设置进行检测-例如,将每个字段与另一个设置为
true
bool
字段配对,当相应字段的值被设置时。谢谢。我正在考虑一种解决方案,在错误发生时检查代码并警告程序员。我不知道这是否是围棋文化中的常见做法,但我非常感兴趣!
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
}