Shadow
golang中内置map类型使用routing报错方案笔记
golang中内置map类型使用routing报错方案笔记
//gorouting中内置map类型报错笔记
package main
import (
"fmt"
"strconv"
"sync"
)
var (
wg sync.WaitGroup
map1 = make(map[string]int)
map2 = sync.Map{} //不需要make初始化
)
func main(){
//fatal error: concurrent map writes 使用内置的map类型,做并发的时候会报致命错误
//for i := 0; i < 20; i++ {
// wg.Add(1)
// go appedMap(i)
//}
for i := 0; i < 200; i++ {
wg.Add(1)
go appedSyncMap(i)
}
wg.Wait()
val,err := map2.Load("4") //取值
fmt.Println(val,err)
}
//内置的map类型
func appedMap(val int){
keyStr := strconv.Itoa(val+2)
map1[keyStr] = val
wg.Done()
}
//sync提供的map类型
func appedSyncMap(val int){
keyStr := strconv.Itoa(val+2)
map2.Store(keyStr,val) //存值
wg.Done()
}
Dcr163的博客
http://dcr163.cn/596.html(转载时请注明本文出处及文章链接)