为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
白衣非少年 2023-04-10 10:43:35
我有一张地图myMap := make(map[string]interface{})此地图元素之一是 []map[string]string 数组myMap["element"] = []map[string]string我怎样才能迭代这个数组?
查看完整描述

1 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

您不能迭代 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。但是,请谨慎行事:如果您从映射中获取的值不是这种类型,并且您忽略了检查,您的程序将会崩溃。


查看完整回答
反对 回复 2023-04-10
  • 1 回答
  • 0 关注
  • 94 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信