如何使用Go中的[] interface {}类型访问数组的某些部分?

时间:2014-06-17 17:44:21

标签: arrays go maps

我有一个带字符串键和值的不同类型的地图,打印时看起来像这样:

map[command:ls count:[1 1]]

当检查计数reflect.TypeOf时,它返回类型[]interface{}。我无法通过索引访问值,如果我尝试将其传递给接受类型为[]interface{}的参数的函数,则声称我想要传递类型为interface{}的值

我想访问此示例中的计数,这将是2个值。 11

1 个答案:

答案 0 :(得分:5)

您必须区分类型和基础类型。您的地图属于map[string]interface{}类型。这意味着count的值为interface{}类型,其基础类型为[]interface{}。因此,您无法将计数作为类型[]interface{}传递。在将它用作数组之前,您已经进行了类型断言。然后,每个项目都会显示interface{}类型,而这些项目又可以声明为int(因为它似乎是您的数据)。

示例:

count := m["count"].([]interface{})
value1 := count[0].(int)
value2 := count[1].(int)