目前正在努力学习围棋。我有以下功能,但它仅在团队不存在于地图中并在地图中创建新记录时才有效。如果团队在地图中已有结构,则不会更新值。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 关注
- 101 浏览
添加回答
举报
0/150
提交
取消