From 07fb74b68b67e4abefa81f316d494275518f4265 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Sun, 23 Mar 2025 15:11:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=B5=8C=E5=A5=97=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E4=BD=93=20+=20=E5=B5=8C=E5=A5=97=E6=95=B0=E7=BB=84?= =?UTF-8?q?=E7=9A=84BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- builder.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/builder.go b/builder.go index 518ee96..8a04d5f 100644 --- a/builder.go +++ b/builder.go @@ -189,7 +189,7 @@ func (b *builderImpl) Build() IDynamicStruct { } else { // 处理数组 arrDeep := 0 - newParentNameArr := []string{} + var newParentNameArr []string for i := len(parentNameArr) - 1; i >= 0; i-- { if parentNameArr[i] != ArraySplit { newParentNameArr = parentNameArr[:i+1] @@ -206,18 +206,19 @@ func (b *builderImpl) Build() IDynamicStruct { val = reflect.New(reflect.SliceOf(reflect.TypeOf(val))).Interface() } // 解除指针引用 - val = reflect.ValueOf(val).Elem().Interface() + // val = reflect.ValueOf(val).Elem().Interface() newParamIndex := strings.Join(newParentNameArr, ".") isTopIndex := len(newParentNameArr) == 1 if isTopIndex { // 顶层结构, 数组类型不存在还有其他属性情况, 直接追加字段, 并移除嵌套表里的定义 b.AddField(b.nestedStructTable[newParamIndex].Field, "", val, b.nestedStructTable[newParamIndex].Tag, false) - delete(b.nestedStructTable, newParamIndex) // b.nestedStructTable[newParamIndex].Builder.AddField(b.nestedStructTable[newParamIndex].Field, "", val, b.nestedStructTable[newParamIndex].Tag, false) } else { // 非顶层结构, 再上探一级 b.nestedStructTable[strings.Join(newParentNameArr[:len(newParentNameArr)-1], ".")].Builder.AddField(b.nestedStructTable[newParamIndex].Field, "", val, b.nestedStructTable[newParamIndex].Tag, false) } + // 嵌套结构中删除数组字段 + delete(b.nestedStructTable, newParamIndex) } else { // 非数组 // (非顶层) 父级结构存在, 将其追加到父级结构中即可, 向前看一步即为父级结构