map[interface {}]interface {}
map[interface{}]interface{} on a map[string]interface{} · Issue #139 · go-yaml/yaml https://github.com/go-yaml/yaml/issues/139
f1: hi世界
f2:
f3: value
f4: [42, 1024]
f5: [a b]
f6:
f7: 77
f8: ok
package main
import (
"fmt"
"io/ioutil"
"gopkg.in/yaml.v3"
)
func main() {
var err error
m := make(map[string]interface{})
var bs []byte
bs, err = ioutil.ReadFile("a.yaml")
if err != nil {
panic(err)
}
err = yaml.Unmarshal(bs, &m)
if err != nil {
panic(err)
}
f1v := m["f1"].(string)
var f3v string
var f4v []int
var f5v []string
var f6v map[string]interface{}
for k, v := range m["f2"].(map[string]interface{}) {
switch k {
case "f3":
f3v = v.(string)
case "f4", "f5":
l := v.([]interface{})
if k == "f4" {
for _, u := range l {
f4v = append(f4v, u.(int))
}
}
if k == "f5" {
for _, u := range l {
f5v = append(f5v, u.(string))
}
}
case "f6":
f6v = v.(map[string]interface{})
default:
}
}
fmt.Println("---->", f1v, f3v, f4v, f5v, f6v)
}
go run *go
----> hi世界 value [42 1024] [a b] map[f7:77 f8:ok]