Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
张磊
/
FileStorageBeego
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
74b22649
authored
2015-04-24 11:14:49 +0800
by
Wyatt Fang
Committed by
astaxie
2015-05-25 09:10:36 +0800
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
remove the double isStruct/isStructPtr check
1 parent
42556305
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
13 additions
and
13 deletions
validation/validation.go
validation/validation.go
View file @
74b2264
...
...
@@ -342,6 +342,7 @@ func (v *Validation) Valid(obj interface{}) (b bool, err error) {
// Anonymous fields will be ignored
func
(
v
*
Validation
)
RecursiveValid
(
objc
interface
{})
(
bool
,
error
)
{
//Step 1: validate obj itself firstly
// fails if objc is not struct
pass
,
err
:=
v
.
Valid
(
objc
)
if
err
!=
nil
||
false
==
pass
{
return
pass
,
err
// Stop recursive validation
...
...
@@ -349,23 +350,22 @@ func (v *Validation) RecursiveValid(objc interface{}) (bool, error) {
// Step 2: Validate struct's struct fields
objT
:=
reflect
.
TypeOf
(
objc
)
objV
:=
reflect
.
ValueOf
(
objc
)
if
isStruct
(
objT
)
||
isStructPtr
(
objT
)
{
if
isStructPtr
(
objT
)
{
objT
=
objT
.
Elem
()
objV
=
objV
.
Elem
()
}
if
isStructPtr
(
objT
)
{
objT
=
objT
.
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
)
{
// Step 3: do the recursive validation
// Only valid the Public field recursively
if
objV
.
Field
(
i
)
.
CanInterface
()
{
pass
,
err
=
v
.
RecursiveValid
(
objV
.
Field
(
i
)
.
Interface
())
}
// Recursive applies to struct or pointer to structs fields
if
isStruct
(
t
)
||
isStructPtr
(
t
)
{
// Step 3: do the recursive validation
// Only valid the Public field recursively
if
objV
.
Field
(
i
)
.
CanInterface
()
{
pass
,
err
=
v
.
RecursiveValid
(
objV
.
Field
(
i
)
.
Interface
())
}
}
}
...
...
Write
Preview
Styling with
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment