diff --git a/abstruct.go b/abstruct.go index 03dfc4e..d7017d5 100644 --- a/abstruct.go +++ b/abstruct.go @@ -35,6 +35,10 @@ type EasyMap interface { Count() int GetAll() map[interface{}]interface{} GetAllForMapKeyString() map[string]interface{} + // Merge 合并数据 + Merge(mergeData ...EasyMap) + // MergeWithReceiver 合并数据并转换 + MergeWithReceiver(receiver interface{}, mergeData ...EasyMap) error // Iterator 对数据的迭代 Iterator(IteratorFunc) // ToStruct 转换成结构体 diff --git a/common.go b/common.go index 2435517..fad4398 100644 --- a/common.go +++ b/common.go @@ -405,3 +405,30 @@ func (c *common) Filter(ignoreFieldList []string, rewriteFieldTable map[string]s } return result } + +// Merge 合并数据 +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 11:01 2024/3/11 +func (c *common) Merge(mergeData ...EasyMap) { + for _, itemData := range mergeData { + allData := itemData.GetAll() + for k, v := range allData { + c.Set(k, v) + } + } +} + +// MergeWithReceiver 合并并转换 +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 11:06 2024/3/11 +func (c *common) MergeWithReceiver(receiver interface{}, mergeData ...EasyMap) error { + c.Merge(mergeData...) + if nil == receiver { + return nil + } + return c.ToStruct(receiver) +}