我有一個(gè)結(jié)構(gòu): type ListsObj struct { Page string `json:"pages"` Count string `json:"count"` Lists []map[string]interface{} `json:"assets"`}我正在嘗試執(zhí)行以下操作:lists := a.Listsfor _, list:= range lists{ listData := list.(map[string]interface {})}a是ListsObj結(jié)構(gòu)類型。我收到以下錯(cuò)誤:無(wú)效類型斷言:list.(map[string])(左側(cè)的非接口類型 map[string]interface {})編輯:我真正需要做的是調(diào)用一個(gè)函數(shù):func WriteMapper(a interface {}) interface{} {}lists := a.Listsfor _, list:= range lists{ list = WriteMapper(list)}但這給出了另一個(gè)錯(cuò)誤:不能在賦值中使用 WriteMapper(list) (type interface {}) 作為 type map[string]interface {}:需要類型斷言編輯:我想我明白了......函數(shù)返回interface,我試圖將它分配給map[string]interface {}??
1 回答

慕工程0101907
TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊
在您的代碼中,a.Lists(因此也是lists)是 a []map[string]interface{},一片地圖。然后,您將迭代該切片,并將每次迭代的值分配給變量list(這有點(diǎn)奇怪,因?yàn)樗钟?a map,但這是一個(gè)單獨(dú)的問(wèn)題)。
現(xiàn)在,list是類型map[string]interface{}。您無(wú)需對(duì)其進(jìn)行類型斷言,因?yàn)樗呀?jīng)是那種類型了!
要按list原樣使用map[string]interface{},只需使用它:
for _, list := range lists {
someValue := list["some-key"]
fmt.Println(someValue)
}
如果您嘗試做一些與僅使用地圖不同的事情,我會(huì)要求您澄清一下。
- 1 回答
- 0 關(guān)注
- 451 瀏覽
添加回答
舉報(bào)
0/150
提交
取消