diff --git a/util/gconv/gconv_struct.go b/util/gconv/gconv_struct.go index 34a27253a..14cfe7410 100644 --- a/util/gconv/gconv_struct.go +++ b/util/gconv/gconv_struct.go @@ -244,15 +244,18 @@ func bindVarToStructAttr(elem reflect.Value, name string, value interface{}) (er // bindVarToReflectValue sets to reflect value object . func bindVarToReflectValue(structFieldValue reflect.Value, value interface{}) (err error) { // Converting using interface. - if v, ok := structFieldValue.Interface().(apiSet); ok { - v.Set(value) - return nil - } else if v, ok := structFieldValue.Interface().(apiUnmarshalValue); ok { - err = v.UnmarshalValue(value) - if err == nil { - return err + if !structFieldValue.IsNil() { + if v, ok := structFieldValue.Interface().(apiSet); ok { + v.Set(value) + return nil + } else if v, ok := structFieldValue.Interface().(apiUnmarshalValue); ok { + err = v.UnmarshalValue(value) + if err == nil { + return err + } } } + // Converting by kind. switch structFieldValue.Kind() { case reflect.Struct: