我有一个结构: type ListsObj struct { Page string `json:"pages"` Count string `json:"count"` Lists []map[string]interface{} `json:"assets"`}我正在尝试执行以下操作:lists := a.Listsfor _, list:= range lists{ listData := list.(map[string]interface {})}a是ListsObj结构类型。我收到以下错误:无效类型断言:list.(map[string])(左侧的非接口类型 map[string]interface {})编辑:我真正需要做的是调用一个函数:func WriteMapper(a interface {}) interface{} {}lists := a.Listsfor _, list:= range lists{ list = WriteMapper(list)}但这给出了另一个错误:不能在赋值中使用 WriteMapper(list) (type interface {}) 作为 type map[string]interface {}:需要类型断言编辑:我想我明白了......函数返回interface,我试图将它分配给map[string]interface {}??
1 回答

慕工程0101907
TA贡献1887条经验 获得超5个赞
在您的代码中,a.Lists(因此也是lists)是 a []map[string]interface{},一片地图。然后,您将迭代该切片,并将每次迭代的值分配给变量list(这有点奇怪,因为它持有 a map,但这是一个单独的问题)。
现在,list是类型map[string]interface{}。您无需对其进行类型断言,因为它已经是那种类型了!
要按list原样使用map[string]interface{},只需使用它:
for _, list := range lists {
someValue := list["some-key"]
fmt.Println(someValue)
}
如果您尝试做一些与仅使用地图不同的事情,我会要求您澄清一下。
- 1 回答
- 0 关注
- 424 浏览
添加回答
举报
0/150
提交
取消