package main import ( "fmt" "log" "gopkg.in/yaml.v2" ) func test_parse_yaml() { data := []byte(` name: GOLANG say: f: hello b: world say2: - f: hello b: world `) v := yaml.MapSlice{} // 用于接收解析的 yaml 数据 if err := yaml.Unmarshal(data, &v); err != nil { log.Fatal(err) } for _, item := range v { //key := item.Key switch value := item.Value.(type) { // value 表示 item.Value 转换成对应 type 的值 case string: // item.Value 是字符串类型 fmt.Println("Type: string", value) fmt.Println("----------------------------------") case yaml.MapSlice: // item.Value 是yaml.MapSlice类型 fmt.Println("Type: yaml.MapSlice", value) for _, subitem := range value { fmt.Println(subitem) } fmt.Println("----------------------------------") case []interface{}: // []interface{} 类型 fmt.Println("Type: []interface{}", value) for _, subint := range value { fmt.Println(subint) } fmt.Println("----------------------------------") default: // 未知类型 fmt.Println("Type: unknow", value) fmt.Println("----------------------------------") } } } func main() { test_parse_yaml() }
有疑问加站长微信联系(非本文作者)