猿问

如何在接口{}中迭代数组?

我有一张地图

myMap := make(map[string]interface{})

此地图元素之一是 []map[string]string 数组

myMap["element"] = []map[string]string

我怎样才能迭代这个数组?


白衣非少年
浏览 95回答 1
1回答

RISEBY

您不能迭代 type 的值interface{},这是您将从映射中的任何键的查找返回的类型(因为它具有 type map[string]interface{})。您应该使用类型断言来获取该类型的值,然后您可以在其范围内。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}这是一个使用这些地图类型的人为设置的工作操场示例。如果您知道该值属于指定的切片类型,则可以省略ok类型断言中的检查。如果您正在使用其他人的通用映射实现(具有 type 的键interface{})并且知道您只使用 type 的值填充它,则可能会出现这种情况[]map[string]string。但是,请谨慎行事:如果您从映射中获取的值不是这种类型,并且您忽略了检查,您的程序将会崩溃。
随时随地看视频慕课网APP

相关分类

Go
我要回答