我有一個結構: 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 關注
- 452 瀏覽
添加回答
舉報
0/150
提交
取消