如果这样写:
results := make(map[string]string)
则生成的map,value必须都是string类型。
如果想要多种value类型的map,可以这样定义:
results := make(map[string]interface {})
用interface{}来定义value类型,就可以存储int/string/map/…多种类型的value。
不过这种interface{}在使用时也要转换一下格式。
例如,得到的结果如下:
results :=
[
{...},
{
"children": [
{
"children": null,
"key": "6_label_temp",
"label": "label_temp",
"value": "6"
},
{
"children": null,
"key": "7_label_temp",
"label": "label_temp",
"value": "7"
}
],
"key": "5_label_temp",
"label": "label_temp",
"value": "5"
},
...
{...}
]
要想获得results这个数组中的一个元素中的各个key的value,这样获得:
fmt.Println("results[1]: ", results[1])
//以下3个变量的数据类型都是string,其实也需要转换一下(results[1]["key"].(string)),不过直接打印的话就不用;
//如果是int类型,想要进行基础运算操作,就需要转换类型(例如results["num"].(int)+1)
fmt.Println("key: ", results[1]["key"])
fmt.Println("label: ", results[1]["label"])
fmt.Println("value, ", results[1]["value"])
//注意下面这个数据类型,要先把interface{}转换为[]map[string]interface{}
child := results[1]["children"].([]map[string]interface{})
fmt.Println("children, ", child[0]) //child是一个数组,此处取第0个元素