sync.Map内置方法: Load(key interface{}) (value interface{}, ok bool) Store(key interface{}, value interface{}) LoadOrStore(key interface{}, value interface{}) (actual interface{}, loaded bool) Delete(key interface{}) Range(f func(key interface{}, value interface{}) bool) missLocked() dirtyLocked()
var m sync.Map
var wg sync.WaitGroup
funcmain(){for i :=0; i <200; i++{
wg.Add(1)gofunc(n int){
key := strconv.Itoa(n)
m.Store(key, n)//往map中存取键值对
value,_:= m.Load(key)//根据键从map中取值
fmt.Println(key, value)defer wg.Done()}(i)}
wg.Wait()}
var wg sync.WaitGroup
funcf1(i int){defer wg.Done()//没执行一次减1
time.Sleep(time.Second * time.Duration(rand.Intn(3)))
fmt.Println(i)}funcmain(){for i :=0; i <10; i++{
wg.Add(1)//没启动一次加1gof1(i)//启动10个goroutine}
wg.Wait()//等待wg的计数器减为0时结束goroutine}