【发布时间】:2018-07-30 04:52:32
【问题描述】:
我希望编写一个可以解析 yaml 文件的 go 脚本。我使用以下内容创建了一个测试 yaml 文件:
Dog:
- name: "Dog"
- secrets:
username: "Shiba"
password: "inu"
color: "yellow"
Cat:
- name: "Cat"
- secrets:
words: "meow"
color: "black"
在 go 中映射到结构会是什么样子?
我已经尝试过:
package main
import (
"fmt"
"log"
"github.com/spf13/viper"
)
type Animal struct {
Animal []string
Name string
Secrets []map[string]string
}
func main() {
viper.SetConfigName("demo")
viper.AddConfigPath(".")
viper.SetConfigType("yaml")
err := viper.ReadInConfig()
if err != nil {
log.Fatal(err)
}
var animal Animal
err = viper.Unmarshal(&animal)
if err != nil {
log.Fatal(err)
}
fmt.Println(animal.Name)
}
但是什么都没有返回
任何帮助将不胜感激
谢谢
【问题讨论】:
-
对于 Viper,我以为你打电话给
viper.ReadInConfig(),而不是解组 - 但我可能是错的 -
查看go-yaml
-
我不认为你的意思是“结构的键”——键通常是具体的类型,比如字符串或整数。