您正在试图从读
histogram中
fmt.Println(histogram)未同步到够程变异它的写入
histogram[w]++。您可以添加锁以同步写入和读取。
例如
var lock sync.Mutexgo func() { lock.Lock() defer lock.Unlock() for w := range words { histogram[w]++ }}()//...lock.Lock()fmt.Println(histogram)请注意,您也可以使用
sync.RWMutex。
您可以做的另一件事是等待goroutine变异
histogram完成。
var histWG sync.WaitGrouphistWG.Add(1)go func() { for w := range words { histogram[w]++ } histWG.Done()}()wg.Wait()close(words)histWG.Wait()fmt.Println(histogram)或者只是使用频道来等待。
done := make(chan bool)go func() { for w := range words { histogram[w]++ } done <- true}()wg.Wait()close(words)<-donefmt.Println(histogram)


