fix(util/gconv): assigned the same value to struct field and its same name field in embedded struct failed (#3905)

This commit is contained in:
wln32
2024-11-06 21:12:01 +08:00
committed by GitHub
parent e4c4fb591e
commit d1872f17f7
3 changed files with 27 additions and 92 deletions

View File

@ -59,16 +59,17 @@ func (csi *CachedStructInfo) AddField(field reflect.StructField, fieldIndexes []
}
func (csi *CachedStructInfo) makeOrCopyCachedInfo(
field reflect.StructField,
fieldIndexes []int,
priorityTags []string,
field reflect.StructField, fieldIndexes []int, priorityTags []string,
cachedFieldInfo *CachedFieldInfo,
currTagOrFieldName string,
) (newFieldInfo *CachedFieldInfo) {
if cachedFieldInfo == nil {
// If the field is not cached, it creates a new one.
newFieldInfo = csi.makeCachedFieldInfo(field, fieldIndexes, priorityTags)
} else if cachedFieldInfo.StructField.Type != field.Type {
newFieldInfo.IsField = currTagOrFieldName == field.Name
return
}
if cachedFieldInfo.StructField.Type != field.Type {
// If the types are different, some information needs to be reset.
newFieldInfo = csi.makeCachedFieldInfo(field, fieldIndexes, priorityTags)
} else {