3 回答

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個(gè)贊
您基本上在循環(huán)的每次迭代中修改相同的變量manyUsers,for并在每次創(chuàng)建新映射條目時(shí)使用該單個(gè)實(shí)例作為值。
您沒有向我們展示您zendesk.ManyUser的定義方式,但如果它具有引用語義,您的所有地圖條目都將共享相同的數(shù)據(jù)。
我的猜測(鑒于不完整的問題陳述)是您需要zendesk.ManyUser在循環(huán)的每次迭代中創(chuàng)建一個(gè)新實(shí)例:
users := make(map[string]zendesk.ManyUsers)
for {
...
var manyUsers zendesk.ManyUsers
manyUsers.AppendUsers(mysqlRequest(country, id))
users[country] = manyUsers
fmt.Printf("[%s]: %#v\n\n", country, users[country])
}
一個(gè)顯而易見的效果演示就在那里——觀察到第一個(gè)循環(huán)的迭代修改了相同的變量,而在第二個(gè)循環(huán)中,每個(gè)迭代首先獲得一個(gè)新的變量實(shí)例。

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊
manyUsers 的類型是 value 而不是 reference,所以下面的代碼可能沒問題
var manyUsers *zendesk.ManyUsers
users := make(map[string]*zendesk.ManyUsers)
......

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個(gè)贊
我弄清楚我需要做什么,我使用了@kostix 的建議,所以我在for循環(huán)的每次迭代中創(chuàng)建,var manyUsers zendesk.ManyUsers但我還添加了以下內(nèi)容:
manyUsers = users[country]
manyUsers.AppendUsers(mysqlRequest(country, id))
users[country] = manyUsers
將每個(gè)國家/地區(qū)的當(dāng)前值傳遞給我的manyUsers我能夠User在ManyUsers結(jié)構(gòu)中添加一個(gè)新元素并將附加值返回給users[country]. 因此,我從不匯總迭代中的數(shù)據(jù),并且每個(gè)國家/地區(qū)都獲得了正確數(shù)量的用戶。
謝謝你。
- 3 回答
- 0 關(guān)注
- 149 瀏覽
添加回答
舉報(bào)