From f38559b4893a333e7122cf42155be352c9b5d7c6 Mon Sep 17 00:00:00 2001 From: joeybloggs Date: Mon, 15 Feb 2016 20:41:29 -0500 Subject: [PATCH] Update checking unexpected fields for Go 1.6 https://tip.golang.org/doc/go1.6#reflect * I have not run into the issue yet, but being preemptive --- README.md | 58 ++++++++++++++++++++++++++-------------------------- validator.go | 2 +- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index de7bbe5..091afec 100644 --- a/README.md +++ b/README.md @@ -306,38 +306,38 @@ func validateStruct() { Benchmarks ------ -###### Run on MacBook Pro (Retina, 15-inch, Late 2013) 2.6 GHz Intel Core i7 16 GB 1600 MHz DDR3 using Go version go1.5.2 darwin/amd64 +###### Run on MacBook Pro (Retina, 15-inch, Late 2013) 2.6 GHz Intel Core i7 16 GB 1600 MHz DDR3 using Go version go1.5.3 darwin/amd64 ```go go test -cpu=4 -bench=. -benchmem=true PASS -BenchmarkFieldSuccess-4 10000000 176 ns/op 0 B/op 0 allocs/op -BenchmarkFieldFailure-4 2000000 727 ns/op 432 B/op 4 allocs/op -BenchmarkFieldDiveSuccess-4 500000 3220 ns/op 480 B/op 27 allocs/op -BenchmarkFieldDiveFailure-4 500000 3823 ns/op 912 B/op 31 allocs/op -BenchmarkFieldCustomTypeSuccess-4 5000000 368 ns/op 32 B/op 2 allocs/op -BenchmarkFieldCustomTypeFailure-4 2000000 699 ns/op 432 B/op 4 allocs/op -BenchmarkFieldOrTagSuccess-4 1000000 1265 ns/op 16 B/op 1 allocs/op -BenchmarkFieldOrTagFailure-4 1000000 1182 ns/op 464 B/op 6 allocs/op -BenchmarkStructLevelValidationSuccess-4 2000000 739 ns/op 176 B/op 6 allocs/op -BenchmarkStructLevelValidationFailure-4 1000000 1368 ns/op 640 B/op 11 allocs/op -BenchmarkStructSimpleCustomTypeSuccess-4 2000000 965 ns/op 80 B/op 5 allocs/op -BenchmarkStructSimpleCustomTypeFailure-4 1000000 1561 ns/op 688 B/op 11 allocs/op -BenchmarkStructPartialSuccess-4 1000000 1285 ns/op 384 B/op 10 allocs/op -BenchmarkStructPartialFailure-4 1000000 1879 ns/op 832 B/op 15 allocs/op -BenchmarkStructExceptSuccess-4 2000000 1038 ns/op 336 B/op 7 allocs/op -BenchmarkStructExceptFailure-4 1000000 1330 ns/op 384 B/op 10 allocs/op -BenchmarkStructSimpleCrossFieldSuccess-4 1000000 1081 ns/op 128 B/op 6 allocs/op -BenchmarkStructSimpleCrossFieldFailure-4 1000000 1737 ns/op 592 B/op 11 allocs/op -BenchmarkStructSimpleCrossStructCrossFieldSuccess-4 1000000 1790 ns/op 192 B/op 10 allocs/op -BenchmarkStructSimpleCrossStructCrossFieldFailure-4 500000 2431 ns/op 656 B/op 15 allocs/op -BenchmarkStructSimpleSuccess-4 2000000 950 ns/op 48 B/op 3 allocs/op -BenchmarkStructSimpleFailure-4 1000000 1672 ns/op 688 B/op 11 allocs/op -BenchmarkStructSimpleSuccessParallel-4 5000000 271 ns/op 48 B/op 3 allocs/op -BenchmarkStructSimpleFailureParallel-4 2000000 670 ns/op 688 B/op 11 allocs/op -BenchmarkStructComplexSuccess-4 300000 5828 ns/op 544 B/op 32 allocs/op -BenchmarkStructComplexFailure-4 200000 11382 ns/op 3912 B/op 77 allocs/op -BenchmarkStructComplexSuccessParallel-4 1000000 1739 ns/op 544 B/op 32 allocs/op -BenchmarkStructComplexFailureParallel-4 300000 4682 ns/op 3912 B/op 77 allocs/op +BenchmarkFieldSuccess-4 10000000 167 ns/op 0 B/op 0 allocs/op +BenchmarkFieldFailure-4 2000000 701 ns/op 432 B/op 4 allocs/op +BenchmarkFieldDiveSuccess-4 500000 2937 ns/op 480 B/op 27 allocs/op +BenchmarkFieldDiveFailure-4 500000 3536 ns/op 912 B/op 31 allocs/op +BenchmarkFieldCustomTypeSuccess-4 5000000 341 ns/op 32 B/op 2 allocs/op +BenchmarkFieldCustomTypeFailure-4 2000000 679 ns/op 432 B/op 4 allocs/op +BenchmarkFieldOrTagSuccess-4 1000000 1157 ns/op 16 B/op 1 allocs/op +BenchmarkFieldOrTagFailure-4 1000000 1109 ns/op 464 B/op 6 allocs/op +BenchmarkStructLevelValidationSuccess-4 2000000 694 ns/op 176 B/op 6 allocs/op +BenchmarkStructLevelValidationFailure-4 1000000 1311 ns/op 640 B/op 11 allocs/op +BenchmarkStructSimpleCustomTypeSuccess-4 2000000 894 ns/op 80 B/op 5 allocs/op +BenchmarkStructSimpleCustomTypeFailure-4 1000000 1496 ns/op 688 B/op 11 allocs/op +BenchmarkStructPartialSuccess-4 1000000 1229 ns/op 384 B/op 10 allocs/op +BenchmarkStructPartialFailure-4 1000000 1838 ns/op 832 B/op 15 allocs/op +BenchmarkStructExceptSuccess-4 2000000 961 ns/op 336 B/op 7 allocs/op +BenchmarkStructExceptFailure-4 1000000 1218 ns/op 384 B/op 10 allocs/op +BenchmarkStructSimpleCrossFieldSuccess-4 2000000 954 ns/op 128 B/op 6 allocs/op +BenchmarkStructSimpleCrossFieldFailure-4 1000000 1569 ns/op 592 B/op 11 allocs/op +BenchmarkStructSimpleCrossStructCrossFieldSuccess-4 1000000 1588 ns/op 192 B/op 10 allocs/op +BenchmarkStructSimpleCrossStructCrossFieldFailure-4 1000000 2217 ns/op 656 B/op 15 allocs/op +BenchmarkStructSimpleSuccess-4 2000000 925 ns/op 48 B/op 3 allocs/op +BenchmarkStructSimpleFailure-4 1000000 1650 ns/op 688 B/op 11 allocs/op +BenchmarkStructSimpleSuccessParallel-4 5000000 261 ns/op 48 B/op 3 allocs/op +BenchmarkStructSimpleFailureParallel-4 2000000 758 ns/op 688 B/op 11 allocs/op +BenchmarkStructComplexSuccess-4 300000 5868 ns/op 544 B/op 32 allocs/op +BenchmarkStructComplexFailure-4 200000 10767 ns/op 3912 B/op 77 allocs/op +BenchmarkStructComplexSuccessParallel-4 1000000 1559 ns/op 544 B/op 32 allocs/op +BenchmarkStructComplexFailureParallel-4 500000 3747 ns/op 3912 B/op 77 allocs ``` Complimentary Software diff --git a/validator.go b/validator.go index d3cc543..0e6db7e 100644 --- a/validator.go +++ b/validator.go @@ -512,7 +512,7 @@ func (v *Validate) tranverseStruct(topStruct reflect.Value, currentStruct reflec fld = typ.Field(i) - if fld.PkgPath != blank { + if fld.PkgPath != blank && !fld.Anonymous { continue }