package jconcurrency import ( "sync" ) //HashMap对象,安全操作 type JyMap struct { Lock sync.RWMutex Data map[any]any } func NewJM() *JyMap { return &JyMap{Data: map[any]any{}} } //设置 func (jm *JyMap) Set(k, v any) { jm.Lock.Lock() jm.Data[k] = v jm.Lock.Unlock() } //获取 func (jm *JyMap) Get(k any) (v any) { jm.Lock.RLock() defer jm.Lock.RUnlock() return jm.Data[k] } //获取并删除 func (jm *JyMap) GetAndDel(k any) (v any) { jm.Lock.Lock() defer jm.Lock.Unlock() v = jm.Data[k] delete(jm.Data, k) return } //仅删除 func (jm *JyMap) Del(k any) { jm.Lock.Lock() defer jm.Lock.Unlock() delete(jm.Data, k) return } //如果不存在则设置 func (jm *JyMap) SetIfNoExists(k, v any) { jm.Lock.Lock() defer jm.Lock.Unlock() if jm.Data[k] == nil { jm.Data[k] = v } } //map中是否存在 func (jm *JyMap) IsExists(k any) bool { jm.Lock.RLock() defer jm.Lock.RUnlock() return jm.Data[k] != nil }