我决定添加一个显示类型断言的答案,而不是
reflect包装。您可以决定最适合您的应用程序。我个人更喜欢内置函数,而不是
reflect软件包的复杂性。
var data = `array: - name: myvar val: 1 - name: mymap val: [1, 2]`type Data struct { Array []struct { Name string Val interface{} }}func main() { d := Data{} err := yaml.Unmarshal([]byte(data), &d) if err != nil { log.Fatal(err) } for i := range d.Array { switch val := d.Array[i].(type) { case int: fmt.Println(val) // is integer case []int: fmt.Println(val) // is []int case []string: fmt.Println(val) // is []string // .... you get the idea default: log.Fatalf("Type unaccounted for: %+vn", d.Array[i]) } }}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)