From 1d546624dedcb329f09ce2e20d6a30fcc4490538 Mon Sep 17 00:00:00 2001 From: yusing Date: Sat, 14 Jun 2025 22:12:24 +0800 Subject: [PATCH] fix(serialization): call of reflect.Value.IsNil on string Value --- internal/serialization/serialization.go | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/internal/serialization/serialization.go b/internal/serialization/serialization.go index 5f5e1fc..2597198 100644 --- a/internal/serialization/serialization.go +++ b/internal/serialization/serialization.go @@ -152,20 +152,17 @@ func dive(dst reflect.Value) (v reflect.Value, t reflect.Type, err gperr.Error) } dst = dst.Elem() dstT = dst.Type() - case reflect.Struct: + case reflect.Map: + if dst.IsNil() { + dst.Set(reflect.MakeMap(dstT)) + } + return dst, dstT, nil + case reflect.Slice: + if dst.IsNil() { + dst.Set(reflect.MakeSlice(dstT, 0, 0)) + } return dst, dstT, nil default: - if dst.IsNil() { - switch dst.Kind() { - case reflect.Map: - dst.Set(reflect.MakeMap(dstT)) - case reflect.Slice: - dst.Set(reflect.MakeSlice(dstT, 0, 0)) - default: - err = gperr.Errorf("deserialize: %w for dst %s", ErrInvalidType, dstT.String()) - return - } - } return dst, dstT, nil } }