golang中Map是不安全的
有两种办法解决:
- 加锁
- 用sync.Map
下面展示加读写锁处理:
type SafeMap struct {
Data map[string]int
Lock sync.RWMutex
}
func (m *SafeMap) Get(k string) int {
m.Lock.RLock()
defer m.Lock.RUnlock()
return m.Data[k]
}
func (m *SafeMap) Set(k string, v int) {
m.Lock.Lock()
defer m.Lock.Unlock()
m.Data[k] = v
}
定义一个安全map:
mySafeMap := SafeMap {
Data : make(map[string]int),
}