@@ -56,6 +56,43 @@ type (
5656 Tptr * Timestamp
5757 SA StringArray
5858 }
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+ }
5996 Timestamp time.Time
6097 TA []Timestamp
6198 StringArray []string
@@ -433,6 +470,34 @@ func TestBindSetFields(t *testing.T) {
433470 }
434471}
435472
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+
436501func assertBindTestStruct (a * assert.Assertions , ts * bindTestStruct ) {
437502 a .Equal (0 , ts .I )
438503 a .Equal (int8 (8 ), ts .I8 )
0 commit comments