1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- 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
- }
|