func tryValidate()

in validator.go [109:128]


func tryValidate(val reflect.Value) error {
	t := val.Type()
	var validator Validator

	if (t.Kind() == reflect.Ptr || t.Kind() == reflect.Interface) && val.IsNil() {
		return nil
	}

	if t.Implements(tValidator) {
		validator = val.Interface().(Validator)
	} else if reflect.PtrTo(t).Implements(tValidator) {
		val = pointerize(reflect.PtrTo(t), t, val)
		validator = val.Interface().(Validator)
	}

	if validator == nil {
		return nil
	}
	return validator.Validate()
}