map.go 780 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package dataStruct
  2. import "sync"
  3. type DMapKv struct {
  4. RWLock sync.RWMutex
  5. Map map[interface{}]interface{}
  6. }
  7. func NewDMapKv() *DMapKv {
  8. cm := &DMapKv{
  9. Map: make(map[interface{}]interface{}),
  10. }
  11. return cm
  12. }
  13. func (cm *DMapKv) Add(key interface{}, val interface{}) {
  14. cm.RWLock.Lock()
  15. cm.Map[key] = val
  16. cm.RWLock.Unlock()
  17. }
  18. func (cm *DMapKv) Remove(key interface{}) {
  19. cm.RWLock.Lock()
  20. delete(cm.Map, key)
  21. cm.RWLock.Unlock()
  22. }
  23. func (cm *DMapKv) Get(key interface{}) (interface{}, bool) {
  24. cm.RWLock.RLock()
  25. res, ok := cm.Map[key]
  26. cm.RWLock.RUnlock()
  27. return res, ok
  28. }
  29. func (cm *DMapKv) Len() int {
  30. return len(cm.Map)
  31. }
  32. func (cm *DMapKv) Clean() {
  33. cm.RWLock.Lock()
  34. //cm = NewDmap()
  35. for key, _ := range cm.Map {
  36. delete(cm.Map, key)
  37. }
  38. cm.RWLock.Unlock()
  39. }