Skip to content

Panic when attempting to initialize a field which references an interface #47

Open
@kevin-lindsay-1

Description

@kevin-lindsay-1
type Thingy struct {
  Context context.Context
}
func (obj *Thingy) SetDefaults() {
  if defaults.CanUpdate(obj.Context) { // panic
    obj.Context = context.Background()
  }
}
panic: reflect: call of reflect.Value.Type on zero Value

reflect.Value.typeSlow
	/usr/local/go/src/reflect/value.go:2634
reflect.Value.Type
	/usr/local/go/src/reflect/value.go:2629
github.com/creasty/defaults.isInitialValue
	/usr/root/function/vendor/github.com/creasty/defaults/defaults.go:221
github.com/creasty/defaults.CanUpdate
	/usr/root/function/vendor/github.com/creasty/defaults/defaults.go:243
function/internal/common/utils.(*InvokeOpts).SetDefaults
	/usr/root/function/internal/common/utils/invoke.go:33
github.com/creasty/defaults.callSetter
	/usr/root/function/vendor/github.com/creasty/defaults/setter.go:10
github.com/creasty/defaults.Set
	/usr/root/function/vendor/github.com/creasty/defaults/defaults.go:42
// creasty/defaults/defaults.go#220
func isInitialValue(field reflect.Value) bool {
  return reflect.DeepEqual(reflect.Zero(field.Type()).Interface(), field.Interface())
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions