支持Map类型的包装 #6
37
map.go
37
map.go
@ -9,6 +9,7 @@ package wrapper
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
"reflect"
|
||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -38,7 +39,7 @@ func (m *Map) rUnlock() {
|
|||||||
//
|
//
|
||||||
// Date : 18:34 2024/11/6
|
// Date : 18:34 2024/11/6
|
||||||
func (m *Map) Exist(key string) bool {
|
func (m *Map) Exist(key string) bool {
|
||||||
if nil == m {
|
if m.IsNil() {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
m.rLock()
|
m.rLock()
|
||||||
@ -58,7 +59,7 @@ func (m *Map) Exist(key string) bool {
|
|||||||
//
|
//
|
||||||
// Date : 15:16 2024/11/19
|
// Date : 15:16 2024/11/19
|
||||||
func (m *Map) Set(field string, value any) error {
|
func (m *Map) Set(field string, value any) error {
|
||||||
if nil == m {
|
if m.IsNil() {
|
||||||
return errors.New("Map is nil")
|
return errors.New("Map is nil")
|
||||||
}
|
}
|
||||||
m.lock()
|
m.lock()
|
||||||
@ -67,13 +68,39 @@ func (m *Map) Set(field string, value any) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Del 删除指定的字段
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 15:21 2024/11/19
|
||||||
|
func (m *Map) Del(field string) {
|
||||||
|
if m.IsNil() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
m.lock()
|
||||||
|
defer m.unlock()
|
||||||
|
delete(*m, field)
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsNil 判断map是否为nil
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 15:22 2024/11/19
|
||||||
|
func (m *Map) IsNil() bool {
|
||||||
|
if nil == m {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return reflect.ValueOf(*m).IsNil()
|
||||||
|
}
|
||||||
|
|
||||||
// Get ...
|
// Get ...
|
||||||
//
|
//
|
||||||
// Author : go_developer@163.com<白茶清欢>
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
//
|
//
|
||||||
// Date : 14:41 2024/11/19
|
// Date : 14:41 2024/11/19
|
||||||
func (m *Map) Get(field string) (any, error) {
|
func (m *Map) Get(field string) (any, error) {
|
||||||
if nil == m {
|
if m.IsNil() {
|
||||||
return nil, errors.New("map is nil")
|
return nil, errors.New("map is nil")
|
||||||
}
|
}
|
||||||
m.rLock()
|
m.rLock()
|
||||||
@ -97,7 +124,7 @@ func (m *Map) Get(field string) (any, error) {
|
|||||||
//
|
//
|
||||||
// Date : 14:59 2024/11/19
|
// Date : 14:59 2024/11/19
|
||||||
func (m *Map) GetDefault(field string, defaultValue any, allowNil bool) any {
|
func (m *Map) GetDefault(field string, defaultValue any, allowNil bool) any {
|
||||||
if nil == m {
|
if m.IsNil() {
|
||||||
return defaultValue
|
return defaultValue
|
||||||
}
|
}
|
||||||
m.rLock()
|
m.rLock()
|
||||||
@ -135,7 +162,7 @@ func (m *Map) Value() Map {
|
|||||||
// Date : 19:40 2024/11/6
|
// Date : 19:40 2024/11/6
|
||||||
func (m *Map) Clone() Map {
|
func (m *Map) Clone() Map {
|
||||||
newData := map[string]any{}
|
newData := map[string]any{}
|
||||||
if nil == m {
|
if m.IsNil() {
|
||||||
return newData
|
return newData
|
||||||
}
|
}
|
||||||
m.rLock()
|
m.rLock()
|
||||||
|
@ -19,3 +19,12 @@ func TestMap_Exist(t *testing.T) {
|
|||||||
fmt.Println(testData.Exist("name"))
|
fmt.Println(testData.Exist("name"))
|
||||||
fmt.Println(testData.Exist("age"))
|
fmt.Println(testData.Exist("age"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestMap_IsNil(t *testing.T) {
|
||||||
|
var (
|
||||||
|
m Map
|
||||||
|
m1 *Map
|
||||||
|
)
|
||||||
|
fmt.Println(m.Set("a", 1))
|
||||||
|
fmt.Println(m.IsNil(), m1.IsNil())
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user