fix zero pointer

This commit is contained in:
sdghchj 2020-12-31 01:17:03 +08:00 committed by GitHub
parent 3bfddf8c74
commit bbeb354079
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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()