我试图解组YAML条目,这些条目可以是字符串或键列表:值字符串(根据Go映射)。我无法弄清楚如何做到这一点。我知道我可以编写自己的解组器,但这似乎仅适用于结构。
我有第一部分工作:
package main
import (
"log"
"gopkg.in/yaml.v2"
)
type Data struct {
Entry []Entry `yaml:"entries"`
}
type Entry map[string]string
var dat string = `
entries:
- keya1: val1
keya2: val2
- keyb1: val1
keyb2: val2
- val3`
func main() {
out := Data{}
if err := yaml.Unmarshal([]byte(dat), &out); err != nil {
log.Fatal(err)
}
log.Printf("%+v", out)
}
但是- val3
显然,该条目现在导致错误。我如何才能识别列表和单个字符串条目?
谢谢
以前已经以各种方式回答了这个问题,但是长话短说,很容易将其分解为一个接口,然后处理这两种情况
type Entry interface{}
for _, entry := range out.Entry {
switch i := entry.(type) {
case string:
log.Printf("i is a string %+v\n", i)
case map[interface{}]interface{}:
log.Printf("i is a map %+v\n", i)
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句