当我使用Unmarshal
viper 的方法用我的 yaml 文件中的值填充我的配置结构时,一些结构字段变成了空的!我这样做:
viper.SetConfigType("yaml")
viper.SetConfigName("config")
viper.AddConfigPath("/etc/myapp/")
viper.AddConfigPath(".")
err := viper.ReadInConfig()
// error checking ...
conf := &ConfYaml{}
err = viper.Unmarshal(conf)
// error checking ...
我的结构是这样的:
type ConfYaml struct {
Endpoints SectionStorageEndpoint `yaml:"endpoints"`
}
type SectionStorageEndpoint struct {
URL string `yaml:"url"`
AccessKey string `yaml:"access_key"`
SecretKey string `yaml:"secret_key"`
UseSSL bool `yaml:"use_ssl"`
Location string `yaml:"location"`
}
这里url
和location
字段在yaml文件中填充了正确的值,但其他字段为空!
奇怪的是,当我尝试打印如下字段时:
viper.Get("endpoints.access_key")
它在 yaml 文件中打印正确的值并且不为空!