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

“左侧的非接口类型映射 [字符串] 接口 {}”错误

“左侧的非接口类型映射 [字符串] 接口 {}”错误

Go
MMTTMM 2022-06-06 17:52:51
我有一个结构: 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)

}

如果您尝试做一些与仅使用地图不同的事情,我会要求您澄清一下。


查看完整回答
反对 回复 2022-06-06
  • 1 回答
  • 0 关注
  • 424 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号