package dataStruct import "sync" type DMapKv struct { RWLock sync.RWMutex Map map[interface{}]interface{} } func NewDMapKv() *DMapKv { cm := &DMapKv{ Map: make(map[interface{}]interface{}), } return cm } func (cm *DMapKv) Add(key interface{}, val interface{}) { cm.RWLock.Lock() cm.Map[key] = val cm.RWLock.Unlock() } func (cm *DMapKv) Remove(key interface{}) { cm.RWLock.Lock() delete(cm.Map, key) cm.RWLock.Unlock() } func (cm *DMapKv) Get(key interface{}) (interface{}, bool) { cm.RWLock.RLock() res, ok := cm.Map[key] cm.RWLock.RUnlock() return res, ok } func (cm *DMapKv) Len() int { return len(cm.Map) } func (cm *DMapKv) Clean() { cm.RWLock.Lock() //cm = NewDmap() for key, _ := range cm.Map { delete(cm.Map, key) } cm.RWLock.Unlock() }