我知道標題說接口數組,但這就是打印數據的方式。我在 mongodb 中有一個名為“設備”的字段,它是對象類型。該對象包含一堆隨機鍵值對。鍵只是隨機生成的整數,值是字符串。所以我寫了一些從數據庫中檢索數據的代碼,在我檢索到數據之后,我想從這些對象中獲取所有鍵并將它們存儲在一個數組中,我似乎不知道該怎么做那。首先,我假設我的問題在于獲取數據的方式,因為我將其存儲到 interface{} 而不是數組中。數據像數組一樣打印出來,但是當我更改結構以檢索數組時,它返回為空,所以我放棄了這個想法。功能 type Data struct { Devices interface{} `json:"devices" bson:"devices"` } client := db.ConnectClient() col := client.Database("Users").Collection("User") var deviceIds Data _ = col.FindOne(context.TODO(), bson.D{}).Decode(&deviceIds) log.Print(deviceIds.Devices)輸出2020/10/29 21:28:07 [{123456789 Plant} {456753121 Money Bringer} {798745321 Hello}]我也嘗試過將該結構更改為 type Data struct { Devices map[int]interface{} `json:"devices" bson:"devices"` }這給出了一個輸出2020/10/29 21:35:10 map[123456789:Plant 456753121:Money Bringer 798745321:Hello]但我又不知道如何從中提取密鑰
1 回答

一只名叫tom的貓
TA貢獻1906條經驗 獲得超3個贊
所以當我剛寫完這個問題時,我發現地圖是獲取數據的正確方法。
發布問題并自己回答,因為我認為這對其他人有用
type Data struct {
Devices map[int]interface{} `json:"devices" bson:"devices"`
}
for key, value := range deviceIds.Devices {
fmt.Println(key, value)
}
將結構更改為上面的地圖,然后用范圍循環遍歷它,效果很好
- 1 回答
- 0 關注
- 109 瀏覽
添加回答
舉報
0/150
提交
取消