wrapper/map.go
2024-11-06 19:50:09 +08:00

78 lines
1.1 KiB
Go

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