目前正在努力學習圍棋。我有以下功能,但它僅在團隊不存在于地圖中并在地圖中創建新記錄時才有效。如果團隊在地圖中已有結構,則不會更新值。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 }}我已經更新了函數以僅用具有我想要的值的全新結構替換現有記錄,但是我無法更新地圖中的值似乎很奇怪。有人可以向我解釋一下,或者指出正確的方向嗎?
1 回答

桃花長相依
TA貢獻1860條經驗 獲得超8個贊
你有一個string
到 的地圖TeamRow
,所以當你離開val
地圖時,它會返回團隊的價值,而不是指向團隊的指針。如果您將映射設為指向的指針的字符串,TeamRow
那么當您取出 val 時,它將指向存儲在映射中的內存,因此值將在您的AddLoss
函數范圍之外持續存在。要做到這一點,只需*
在地圖聲明中添加一個 -teamMap map[string]*TeamRow
盡管當您填充它時,您還需要在地圖中存儲指針。
- 1 回答
- 0 關注
- 129 瀏覽
添加回答
舉報
0/150
提交
取消