我有一张地图
myMap := make(map[string]interface{})
其中一个地图元素是[] map [string] string
的数组myMap["element"] = []map[string]string
我怎样迭代这个数组?
答案 0 :(得分:6)
您无法遍历类型为interface{}
的值,该类型是您从映射中的任何键的查找中返回的类型(因为它的类型为map[string]interface{}
)。 / p>
您应该使用type assertion来获取该类型的值,然后可以在其上进行范围调整。
myElt := myMap["element"]
v, ok := myElt.([]map[string]string)
if !ok {
// TODO: Handle the error
}
for i, item := range v {
// TODO: do something with each map[string]string item in the slice
}
这里是working playground example,针对这些地图类型使用人为设置。
如果知道值是指定的切片类型,则可以在类型断言中省略ok
检查。如果您使用的是其他人的通用地图实现(其键类型为interface{}
),并且知道您只使用类型为[]map[string]string
的值填充,则可能是这种情况。但是,请谨慎行事:如果您从地图上获得此类型的值 not ,并且您忽略了检查,则程序将出现紧急情况。