1package main2 3import (4 "fmt"5 "sync"6)7 8type Box struct {9 data map[int]int10 mu sync.Mutex11}12 13func (b Box) Put(i int) {14 b.mu.Lock()15 b.data[i%5]++16 b.mu.Unlock()17}18 19func (b Box) Dump() {20 for k, v := range b.data {21 fmt.Println("key = ", k, "value = ", v)22 }23}24 25func NewBox() Box {26 return Box{27 data: make(map[int]int),28 }29}30 31func RunTest() {32 b := NewBox()33 wg := sync.WaitGroup{}34 for i := 0; i < 1200; i++ {35 wg.Add(1)36 go func(k int) {37 defer wg.Done()38 b.Put(k)39 }(i)40 }41 wg.Wait()42 b.Dump()43}44 45func main() {46 RunTest()47}
Сначала подумай без запуска — на собесе компилятора не будет.