From bbeb3540794d561c23b15f10fb68b4e4aa51e700 Mon Sep 17 00:00:00 2001 From: sdghchj Date: Thu, 31 Dec 2020 01:17:03 +0800 Subject: [PATCH] fix zero pointer --- schema/field.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/schema/field.go b/schema/field.go index ecb73adc..c6d9d7a4 100644 --- a/schema/field.go +++ b/schema/field.go @@ -390,7 +390,13 @@ func (field *Field) setupValuerAndSetter() { // ValueOf isZero := func(fieldValue reflect.Value) bool{ isZero := fieldValue.IsZero - if zeroer, ok := fieldValue.Interface().(interface{ IsZero() bool }); ok { + if fieldValue.Kind() == reflect.Ptr && fieldValue.IsNil() { + if zeroer, ok := fieldValue.Interface().(interface{ IsZero() bool }); ok { + if _, ok := reflect.Indirect(reflect.New(fieldValue.Type().Elem())).Interface().(interface{ IsZero() bool }); !ok { + isZero = zeroer.IsZero + } + } + }else if zeroer, ok := fieldValue.Interface().(interface{ IsZero() bool }); ok { isZero = zeroer.IsZero } return isZero()