目前正在努力學(xué)習(xí)圍棋。我有以下功能,但它僅在團(tuán)隊(duì)不存在于地圖中并在地圖中創(chuàng)建新記錄時(shí)才有效。如果團(tuán)隊(duì)在地圖中已有結(jié)構(gòu),則不會(huì)更新值。func AddLoss(teamMap map[string]TeamRow, teamName string) { if val, ok := teamMap[teamName]; ok { val.Wins++ val.GamesPlayed++ } else { newTeamRow := TeamRow{Losses: 1} teamMap[teamName] = newTeamRow }}我已經(jīng)更新了函數(shù)以僅用具有我想要的值的全新結(jié)構(gòu)替換現(xiàn)有記錄,但是我無(wú)法更新地圖中的值似乎很奇怪。有人可以向我解釋一下,或者指出正確的方向嗎?
1 回答

桃花長(zhǎng)相依
TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊
你有一個(gè)string
到 的地圖TeamRow
,所以當(dāng)你離開(kāi)val
地圖時(shí),它會(huì)返回團(tuán)隊(duì)的價(jià)值,而不是指向團(tuán)隊(duì)的指針。如果您將映射設(shè)為指向的指針的字符串,TeamRow
那么當(dāng)您取出 val 時(shí),它將指向存儲(chǔ)在映射中的內(nèi)存,因此值將在您的AddLoss
函數(shù)范圍之外持續(xù)存在。要做到這一點(diǎn),只需*
在地圖聲明中添加一個(gè) -teamMap map[string]*TeamRow
盡管當(dāng)您填充它時(shí),您還需要在地圖中存儲(chǔ)指針。
- 1 回答
- 0 關(guān)注
- 134 瀏覽
添加回答
舉報(bào)
0/150
提交
取消