我有一个带字符串键的映射和值的不同类型,打印时它看起来像这样:
map[command:ls count:[1 1]]
Run Code Online (Sandbox Code Playgroud)
检查reflect.TypeOf计数时,它返回类型[]interface{}.我无法通过索引访问值,如果我尝试将其传递给接受类型参数的函数,[]interface{}它声称我想要传递一个类型的值interface{}
我想在这个例子中访问计数,这将是2个值.1和1.
您必须区分类型和基础类型.您的地图属于该类型map[string]interface{}.这意味着值count的类型interface{}和它的基础类型if []interface{}.所以你不能将计数作为一种类型传递[]interface{}.在将它用作数组之前,您已经进行了类型断言.然后每个项目都是类型interface{},而这些项目又可以被声明为int(因为它看起来像你的数据).
例:
count := m["count"].([]interface{})
value1 := count[0].(int)
value2 := count[1].(int)
Run Code Online (Sandbox Code Playgroud)