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