我该怎么做?
我有对象列表,我想列出所有并更改对象的名称。 我有列表,我正在做一段时间发送到另一个功能,我在那里更改名称,但名称不保存。
知道我该怎么做?
https://play.golang.org/p/el3FtwC-3U
如果有任何书籍我可以阅读以了解更多信息,请。 感谢帮助我= D
答案 0 :(得分:0)
我没有找到如何在地图中获取指向值的指针,因此我认为您必须使用map[string]*Track
,然后在Track
函数中使用指向Working
结构的指针。
请参阅https://play.golang.org/p/2XJTcKn1md
如果您正在尝试并行修改曲目,您可能正在寻找类似https://play.golang.org/p/1GhST34wId
的内容注意chanel中的丢失缓冲区和go Working
中的for range tracks
。
答案 1 :(得分:0)
在范围循环中:
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
}