go_below_19.go 467 B

123456789101112131415161718192021222324252627282930
  1. //+build !go1.9
  2. package concurrent
  3. import "sync"
  4. type Map struct {
  5. lock sync.RWMutex
  6. data map[interface{}]interface{}
  7. }
  8. func NewMap() *Map {
  9. return &Map{
  10. data: make(map[interface{}]interface{}, 32),
  11. }
  12. }
  13. func (m *Map) Load(key interface{}) (elem interface{}, found bool) {
  14. m.lock.RLock()
  15. elem, found = m.data[key]
  16. m.lock.RUnlock()
  17. return
  18. }
  19. func (m *Map) Store(key interface{}, elem interface{}) {
  20. m.lock.Lock()
  21. m.data[key] = elem
  22. m.lock.Unlock()
  23. }