如何更新地图中的结构属性

目前正在努力学习围棋。


我有以下功能,但它仅在团队不存在于地图中并在地图中创建新记录时才有效。如果团队在地图中已有结构,则不会更新值。


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

    }

}

我已经更新了函数以仅用具有我想要的值的全新结构替换现有记录,但是我无法更新地图中的值似乎很奇怪。


有人可以向我解释一下,或者指出正确的方向吗?


慕妹3146593
浏览 77回答 1
1回答

桃花长相依

你有一个string到 的地图TeamRow,所以当你离开val地图时,它会返回团队的价值,而不是指向团队的指针。如果您将映射设为指向的指针的字符串,TeamRow那么当您取出 val 时,它将指向存储在映射中的内存,因此值将在您的AddLoss函数范围之外持续存在。要做到这一点,只需*在地图声明中添加一个 -teamMap map[string]*TeamRow尽管当您填充它时,您还需要在地图中存储指针。
打开App,查看更多内容
随时随地看视频慕课网APP