我在阅读YAML文件时遇到了问题。我想是文件结构的问题,但我不知道是什么。
- YAML文件:*
conf:
hits:5
time:5000000
- 验证码:*
type conf struct {
hits int64 `yaml:"hits"`
time int64 `yaml:"time"`
}
func (c *conf) getConf() *conf {
yamlFile, err := ioutil.ReadFile("conf.yaml")
if err != nil {
log.Printf("yamlFile.Get err #%v ", err)
}
err = yaml.Unmarshal(yamlFile, c)
if err != nil {
log.Fatalf("Unmarshal: %v", err)
}
return c
}
4条答案
按热度按时间z4bn682m1#
您的yaml文件必须是
你的代码应该看起来像这样:
主要错误是结构体的大写字母。
cedebl8k2#
示例
使用升级的版本3的yaml包。
conf.yaml
文件示例:main.go
文件:运行指令(如果这是您第一次走出stdlib):
关于
yaml:"field"
标签(如
yaml:"field"
)对于全小写的yaml密钥标识符是可选的。为了演示,上面的示例解析了一个额外的camel case标识符,它确实需要这样的标记。边角案例:JSON+YAML
令人困惑的是,
yaml
包的有用的小写行为在标准json
包中看不到。你有一个数据结构,有时编码为JSON,有时编码为YAML?如果是这样,请考虑在每个字段上指定JSON标记和YAML标记。冗长,但减少错误。示例如下。9jyewag03#
最短getConf
wh6knrhe4#
在这里,您可以在没有预定义结构的情况下读取YAML文件。请将“config.yaml”替换为所需的文件名。将“fmt”、“io/ioutil”和“gopkg.in/yaml.v2“添加到导入列表中。