我在阅读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
}
答案 0 :(得分:37)
你的yaml文件必须是
display:inline;
您的代码应如下所示:
display :inline-block;
主要错误是结构的大写字母。
答案 1 :(得分:1)
简化的conf.yaml
文件:
hits: 5
time: 5000000
main.go
文件:
package main
import (
"fmt"
"io/ioutil"
"log"
"gopkg.in/yaml.v2"
)
type conf struct {
Hits int64 `yaml:"hits"`
Time int64 `yaml:"time"`
}
func readConf(filename string) (*conf, error) {
buf, err := ioutil.ReadFile(filename)
if err != nil {
return nil, err
}
c := &conf{}
err = yaml.Unmarshal(buf, c)
if err != nil {
return nil, fmt.Errorf("in file %q: %v", filename, err)
}
return c, nil
}
func main() {
c, err := readConf("conf.yaml")
if err != nil {
log.Fatal(err)
}
fmt.Println(c)
}
运行说明(如果这是您第一次退出stdlib):
go mod init example.com/whatever
go get gopkg.in/yaml.v2
cat go.sum
go run .