Commit 74b22649 authored by Wyatt Fang's avatar Wyatt Fang Committed by astaxie

remove the double isStruct/isStructPtr check

parent 42556305
...@@ -342,6 +342,7 @@ func (v *Validation) Valid(obj interface{}) (b bool, err error) { ...@@ -342,6 +342,7 @@ func (v *Validation) Valid(obj interface{}) (b bool, err error) {
// Anonymous fields will be ignored // Anonymous fields will be ignored
func (v *Validation) RecursiveValid(objc interface{}) (bool, error) { func (v *Validation) RecursiveValid(objc interface{}) (bool, error) {
//Step 1: validate obj itself firstly //Step 1: validate obj itself firstly
// fails if objc is not struct
pass, err := v.Valid(objc) pass, err := v.Valid(objc)
if err != nil || false == pass { if err != nil || false == pass {
return pass, err // Stop recursive validation return pass, err // Stop recursive validation
...@@ -349,23 +350,22 @@ func (v *Validation) RecursiveValid(objc interface{}) (bool, error) { ...@@ -349,23 +350,22 @@ func (v *Validation) RecursiveValid(objc interface{}) (bool, error) {
// Step 2: Validate struct's struct fields // Step 2: Validate struct's struct fields
objT := reflect.TypeOf(objc) objT := reflect.TypeOf(objc)
objV := reflect.ValueOf(objc) objV := reflect.ValueOf(objc)
if isStruct(objT) || isStructPtr(objT) {
if isStructPtr(objT) { if isStructPtr(objT) {
objT = objT.Elem() objT = objT.Elem()
objV = objV.Elem() objV = objV.Elem()
} }
for i := 0; i < objT.NumField(); i++ { for i := 0; i < objT.NumField(); i++ {
t := objT.Field(i).Type t := objT.Field(i).Type
if isStruct(t) || isStructPtr(t) { // Recursive applies to struct or pointer to structs fields
// Step 3: do the recursive validation if isStruct(t) || isStructPtr(t) {
// Only valid the Public field recursively // Step 3: do the recursive validation
if objV.Field(i).CanInterface() { // Only valid the Public field recursively
pass, err = v.RecursiveValid(objV.Field(i).Interface()) if objV.Field(i).CanInterface() {
} pass, err = v.RecursiveValid(objV.Field(i).Interface())
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment