我正在尝试读取如下所示的 YAML 文件中的数据:
Category Name:
Task 1:
Name: Meeting
PM: 1
TC: 0
STC: 1
Optional: false
一个类别中可以有多个任务,也可以有多个类别。我最初是这样阅读 YAML 文件的。
type Task struct {
Name string
PM string
TC string
STC string
Optional bool
}
type Category struct {
Name string
Tasks []Task
}
func parseFile() map[string]map[string]map[string]string {
file, err := ioutil.ReadFile("config.yaml")
if err != nil {
log.Fatal(err)
}
data := make(map[string]map[string]map[string]string)
err1 := yaml.Unmarshal(file, &data)
if err1 != nil {
log.Fatal(err1)
}
return data
}
然后我只有一个函数来循环遍历在 parseFile() 中创建的地图,并创建一个包含填充信息的类别列表。这很好用……除了由于地图未排序而未保留 YAML 文件中写入的类别/任务的顺序之外。
通过在线阅读,我发现您可以使用来自 gokpg.in/yaml.v2 的 yaml.MapSlice{} 来保留顺序。但是,我不知道如何处理生成的 MapSlice。我可以遍历它以获取类别,但我无法遍历 .Value,因为 MapItems 是接口,但 MapItems 会存储我的任务列表。我该怎么做才能获得任务并放入 []Task?
感谢帮助 :)
斯蒂芬大帝
相关分类