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