我正在迭代具有映射欄位的結構陣列:
type Config struct {
// ... some other fields
KV map[string]interface{} `json:"kv"`
}
在測驗檔案中,我知道它KV是空的,所以我正在迭代Config物件陣列并為其分配一個新映射:
for _, v := range wrapper.Configs { // I know this is length > 0
newMap := map[string]interface{}{
"key1": "val1",
"key2": "val2",
"key3": "val3",
}
v.KV = newMap // I have first tried directly assigning. Didn't work, tried copy - didn't work either
}
for _, v := range wrapper.Configs {
fmt.Println(v.KV)
}
但是在回圈之后,KV總是空的。
我也試過:
for _, v := range wrapper.Configs { // I know this is length > 0
v.KV = make(map[string]interface{})
newMap := map[string]interface{}{
"key1": "val1",
"key2": "val2",
"key3": "val3",
}
for kk, vv := range newMap {
v.KV[kk] = vv
}
我一直無法確定如何正確且有效地執行此操作。
搜索了很多,但我的搜索詞給了我不相關的結果。
uj5u.com熱心網友回復:
假設wrapper.Configs是一片結構體(而不是一片指向結構體的指標),v是片中專案的副本,所以更新不會改變原件。
要使此代碼作業,您可以撰寫:
for i := range wrapper.Configs {
v := &wrapper.Configs[i]
...
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/404469.html
標籤:
