支持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()) | ||||||
|  | } | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user