【问题标题】:GO language how to change value of object inside of pointer of mapGO语言如何更改地图指针内的对象值
【发布时间】:2015-03-05 13:41:35
【问题描述】:

我该怎么做?

我有对象列表,我想列出所有对象并更改对象名称。 我有列表,我正在做一段时间发送到另一个函数,在那里我更改了名称,但名称没有保存。

知道我该怎么做吗?

https://play.golang.org/p/el3FtwC-3U

如果有什么书我可以阅读以了解更多信息,请。 谢谢你帮助我=D

【问题讨论】:

标签: go


【解决方案1】:

在范围循环中:

for _, track := range tracks {
    // send track to channel to change the name
    Working(&track, &c)
}

track 变量实际上是映射中包含的值的副本,因为这里的赋值作用于 Track 值类型,而在 Go 中,值在赋值时被复制。

您应该做的是使用地图的键并在循环内分配值。

for key := range tracks {
    t := tracks[key]
    // send track to channel to change the name
    Working(&t, &c)
    tracks[key] = t
}

https://play.golang.org/p/9naDP3SfNh

【讨论】:

    【解决方案2】:

    我没有找到如何在 map 中获取指向值的指针,所以我认为您必须改用 map[string]*Track,然后在 Working 函数中使用指向 Track 结构的指针。

    https://play.golang.org/p/2XJTcKn1md

    如果您尝试并行修改轨道,您可能正在寻找类似https://play.golang.org/p/1GhST34wId

    注意 chanel 中缺少缓冲区,for range tracks 中缺少 go Working

    【讨论】:

      猜你喜欢
      • 2018-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多