From 981ff94388dd13381259ca2acdcb51b02f4497e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Fri, 24 Jan 2025 18:51:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A8=E6=80=81=E7=BB=93=E6=9E=84=E4=BD=93?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0SetMapData=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dynamic_struct.go | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/dynamic_struct.go b/dynamic_struct.go index db99de2..bd5746e 100644 --- a/dynamic_struct.go +++ b/dynamic_struct.go @@ -11,8 +11,14 @@ import ( "encoding/json" "fmt" "reflect" + "sync" ) +// NewMap2DynamicStruct 通过map生成动态结构体 +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 18:48 2025/1/24 func NewMap2DynamicStruct(mapData map[string]any, tagTable map[string]string) *DynamicStruct { d := NewDynamic() d.mapData = mapData @@ -26,6 +32,7 @@ func NewDynamic() *DynamicStruct { return &DynamicStruct{ structFieldList: make([]reflect.StructField, 0), mapData: make(map[string]any), + l: &sync.RWMutex{}, } } @@ -37,6 +44,18 @@ func NewDynamic() *DynamicStruct { type DynamicStruct struct { structFieldList []reflect.StructField // 结构体字段列表 mapData map[string]any + l *sync.RWMutex +} + +// SetMapData 设置map值 +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 18:50 2025/1/24 +func (ds *DynamicStruct) SetMapData(field string, value any) { + ds.l.Lock() + defer ds.l.Unlock() + ds.mapData[field] = value } // AddInt 添加int字段统一Int64 @@ -44,7 +63,7 @@ type DynamicStruct struct { // Author : go_developer@163.com<白茶清欢> // // Date : 17:50 2024/8/21 -func (ds *DynamicStruct) AddInt(fieldName string, fieldTag string, pkgPath string) { +func (ds *DynamicStruct) AddInt(fieldName string, fieldTag string, pkgPath string, value int) { ds.AddStructField(reflect.StructField{ Name: fieldName, PkgPath: pkgPath,