@@ -56,6 +56,43 @@ type (
56
56
Tptr * Timestamp
57
57
SA StringArray
58
58
}
59
+ bindTestStructWithTags struct {
60
+ I int `json:"I" form:"I"`
61
+ PtrI * int `json:"PtrI" form:"PtrI"`
62
+ I8 int8 `json:"I8" form:"I8"`
63
+ PtrI8 * int8 `json:"PtrI8" form:"PtrI8"`
64
+ I16 int16 `json:"I16" form:"I16"`
65
+ PtrI16 * int16 `json:"PtrI16" form:"PtrI16"`
66
+ I32 int32 `json:"I32" form:"I32"`
67
+ PtrI32 * int32 `json:"PtrI32" form:"PtrI32"`
68
+ I64 int64 `json:"I64" form:"I64"`
69
+ PtrI64 * int64 `json:"PtrI64" form:"PtrI64"`
70
+ UI uint `json:"UI" form:"UI"`
71
+ PtrUI * uint `json:"PtrUI" form:"PtrUI"`
72
+ UI8 uint8 `json:"UI8" form:"UI8"`
73
+ PtrUI8 * uint8 `json:"PtrUI8" form:"PtrUI8"`
74
+ UI16 uint16 `json:"UI16" form:"UI16"`
75
+ PtrUI16 * uint16 `json:"PtrUI16" form:"PtrUI16"`
76
+ UI32 uint32 `json:"UI32" form:"UI32"`
77
+ PtrUI32 * uint32 `json:"PtrUI32" form:"PtrUI32"`
78
+ UI64 uint64 `json:"UI64" form:"UI64"`
79
+ PtrUI64 * uint64 `json:"PtrUI64" form:"PtrUI64"`
80
+ B bool `json:"B" form:"B"`
81
+ PtrB * bool `json:"PtrB" form:"PtrB"`
82
+ F32 float32 `json:"F32" form:"F32"`
83
+ PtrF32 * float32 `json:"PtrF32" form:"PtrF32"`
84
+ F64 float64 `json:"F64" form:"F64"`
85
+ PtrF64 * float64 `json:"PtrF64" form:"PtrF64"`
86
+ S string `json:"S" form:"S"`
87
+ PtrS * string `json:"PtrS" form:"PtrS"`
88
+ cantSet string
89
+ DoesntExist string `json:"DoesntExist" form:"DoesntExist"`
90
+ GoT time.Time `json:"GoT" form:"GoT"`
91
+ GoTptr * time.Time `json:"GoTptr" form:"GoTptr"`
92
+ T Timestamp `json:"T" form:"T"`
93
+ Tptr * Timestamp `json:"Tptr" form:"Tptr"`
94
+ SA StringArray `json:"SA" form:"SA"`
95
+ }
59
96
Timestamp time.Time
60
97
TA []Timestamp
61
98
StringArray []string
@@ -433,6 +470,34 @@ func TestBindSetFields(t *testing.T) {
433
470
}
434
471
}
435
472
473
+ func BenchmarkBindbindData (b * testing.B ) {
474
+ b .ReportAllocs ()
475
+ assert := assert .New (b )
476
+ ts := new (bindTestStruct )
477
+ binder := new (DefaultBinder )
478
+ var err error
479
+ b .ResetTimer ()
480
+ for i := 0 ; i < b .N ; i ++ {
481
+ err = binder .bindData (ts , values , "form" )
482
+ }
483
+ assert .NoError (err )
484
+ assertBindTestStruct (assert , ts )
485
+ }
486
+
487
+ func BenchmarkBindbindDataWithTags (b * testing.B ) {
488
+ b .ReportAllocs ()
489
+ assert := assert .New (b )
490
+ ts := new (bindTestStructWithTags )
491
+ binder := new (DefaultBinder )
492
+ var err error
493
+ b .ResetTimer ()
494
+ for i := 0 ; i < b .N ; i ++ {
495
+ err = binder .bindData (ts , values , "form" )
496
+ }
497
+ assert .NoError (err )
498
+ assertBindTestStruct (assert , (* bindTestStruct )(ts ))
499
+ }
500
+
436
501
func assertBindTestStruct (a * assert.Assertions , ts * bindTestStruct ) {
437
502
a .Equal (0 , ts .I )
438
503
a .Equal (int8 (8 ), ts .I8 )
0 commit comments