增加Map为Nil判断

This commit is contained in:
白茶清欢 2024-11-19 15:28:47 +08:00
parent e95ed61cfc
commit db7bf0817e
2 changed files with 41 additions and 5 deletions

37
map.go
View File

@ -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()

View File

@ -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())
}