diff --git a/map.go b/map.go new file mode 100644 index 0000000..6d23965 --- /dev/null +++ b/map.go @@ -0,0 +1,46 @@ +// 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 +} diff --git a/map_test.go b/map_test.go new file mode 100644 index 0000000..b5e022e --- /dev/null +++ b/map_test.go @@ -0,0 +1,21 @@ +// Package wrapper ... +// +// Description : wrapper ... +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 2024-11-06 18:37 +package wrapper + +import ( + "fmt" + "testing" +) + +func TestMap_Exist(t *testing.T) { + testData := Map(map[string]any{ + "name": "zhang", + }) + fmt.Println(testData.Exist("name")) + fmt.Println(testData.Exist("age")) +}