這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
package beegoimport ("sync")type BeeMap struct {lock *sync.RWMutexbm map[interface{}]interface{}}func NewBeeMap() *BeeMap {return &BeeMap{lock: new(sync.RWMutex),bm: make(map[interface{}]interface{}),}}//Get from maps return the k's valuefunc (m *BeeMap) Get(k interface{}) interface{} {m.lock.RLock()defer m.lock.RUnlock()if val, ok := m.bm[k]; ok {return val}return nil}// Maps the given key and value. Returns false// if the key is already in the map and changes nothing.func (m *BeeMap) Set(k interface{}, v interface{}) bool {m.lock.Lock()defer m.lock.Unlock()if val, ok := m.bm[k]; !ok {m.bm[k] = v} else if val != v {m.bm[k] = v} else {return false}return true}// Returns true if k is exist in the map.func (m *BeeMap) Check(k interface{}) bool {m.lock.RLock()defer m.lock.RUnlock()if _, ok := m.bm[k]; !ok {return false}return true}func (m *BeeMap) Delete(k interface{}) {m.lock.Lock()defer m.lock.Unlock()delete(m.bm, k)}