From adff101d264e0ea57f70fa972c9b38a06d7d6e53 Mon Sep 17 00:00:00 2001 From: Dmitry Kutakov Date: Sat, 30 Mar 2019 16:59:42 +0300 Subject: [PATCH] add checkers for a types to match with the setter interface --- binding/form.go | 2 ++ binding/form_mapping.go | 3 +++ 2 files changed, 5 insertions(+) diff --git a/binding/form.go b/binding/form.go index eef0cc13..09087ae0 100644 --- a/binding/form.go +++ b/binding/form.go @@ -66,6 +66,8 @@ func (formMultipartBinding) Bind(req *http.Request, obj interface{}) error { type multipartRequest http.Request +var _ setter = (*multipartRequest)(nil) + var ( multipartFileHeaderStructType = reflect.TypeOf(multipart.FileHeader{}) ) diff --git a/binding/form_mapping.go b/binding/form_mapping.go index 85eb4ce5..615e89ff 100644 --- a/binding/form_mapping.go +++ b/binding/form_mapping.go @@ -31,12 +31,15 @@ func mapFormByTag(ptr interface{}, form map[string][]string, tag string) error { return mappingByPtr(ptr, formSource(form), tag) } +// setter - try to set value on a walking by fields of a struct type setter interface { Set(value reflect.Value, field reflect.StructField, key string, opt setOptions) (isSetted bool, err error) } type formSource map[string][]string +var _ setter = formSource(nil) + func (form formSource) Set(value reflect.Value, field reflect.StructField, tagValue string, opt setOptions) (isSetted bool, err error) { return setByForm(value, field, form, tagValue, opt) }