2024-11-06 18:40:49 +08:00
|
|
|
// Package wrapper ...
|
|
|
|
//
|
|
|
|
// Description : wrapper ...
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 2024-11-06 18:27
|
|
|
|
package wrapper
|
|
|
|
|
|
|
|
import "sync"
|
|
|
|
|
|
|
|
var mapLock = &sync.RWMutex{}
|
|
|
|
|
|
|
|
type Map map[string]any
|
|
|
|
|
|
|
|
func (m *Map) lock() {
|
|
|
|
mapLock.Lock()
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Map) unlock() {
|
|
|
|
mapLock.Unlock()
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Map) rlock() {
|
|
|
|
mapLock.RLock()
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *Map) rUnlock() {
|
|
|
|
mapLock.RUnlock()
|
|
|
|
}
|
|
|
|
|
|
|
|
// Exist key是否存在
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 18:34 2024/11/6
|
|
|
|
func (m *Map) Exist(key string) bool {
|
|
|
|
if nil == m {
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
m.rlock()
|
|
|
|
defer m.unlock()
|
|
|
|
v := *m
|
|
|
|
_, exist := v[key]
|
|
|
|
return exist
|
|
|
|
}
|
2024-11-06 19:50:09 +08:00
|
|
|
|
|
|
|
// Value 获取数据值
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 19:39 2024/11/6
|
|
|
|
func (m *Map) Value() Map {
|
|
|
|
if nil == m {
|
|
|
|
return map[string]any{}
|
|
|
|
}
|
|
|
|
return *m
|
|
|
|
}
|
|
|
|
|
|
|
|
// Clone 克隆数据
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 19:40 2024/11/6
|
|
|
|
func (m *Map) Clone() Map {
|
|
|
|
newData := map[string]any{}
|
|
|
|
if nil == m {
|
|
|
|
return newData
|
|
|
|
}
|
|
|
|
m.rlock()
|
|
|
|
defer m.unlock()
|
|
|
|
mapValue := m.Value()
|
|
|
|
for k, v := range mapValue {
|
|
|
|
newData[k] = v
|
|
|
|
}
|
|
|
|
return newData
|
|
|
|
}
|