我正在尝试同时合并多个地图。 我想从一个通道弹出两个地图,合并这两个地图并将合并后的地图发送回同一个通道,直到完成合并地图。
更大的图景是我同时制作地图,并且我想在有两个可用时立即开始合并地图。最后,我希望得到一张所有制作地图的合并地图。
我想这样做:
func processMaps(c1 chan map[string]int) {
for map1 := range c1 {
map2 := <-c1
mergedMap := mergeMaps(map1, map2)
c1 <- mergedMap
}
}
}
有什么想法吗?
答案 0 :(得分:0)
从空地图开始,将通道上收到的所有地图合并到地图上:
merged := make(make[string]int)
for m := range c {
for k, v := range m {
merged[k] = v
}
}
当通道c
关闭时,循环退出。地图merged
是c
上收到的所有地图的合并。
使用变量来引用合并的地图,而不是将合并的地图发送回频道。将合并后的映射发送回通道会使结束条件更加复杂,而不会增加并发性。