MCPcopy
hub / github.com/gin-gonic/gin / tryToSetValue

Function tryToSetValue

binding/form_mapping.go:145–180  ·  view source on GitHub ↗
(value reflect.Value, field reflect.StructField, setter setter, tag string)

Source from the content-addressed store, hash-verified

143}
144
145func tryToSetValue(value reflect.Value, field reflect.StructField, setter setter, tag string) (bool, error) {
146 var tagValue string
147 var setOpt setOptions
148
149 tagValue = field.Tag.Get(tag)
150 tagValue, opts := head(tagValue, ",")
151
152 if tagValue == "" { // default value is FieldName
153 tagValue = field.Name
154 }
155 if tagValue == "" { // when field is "emptyField" variable
156 return false, nil
157 }
158
159 var opt string
160 for len(opts) > 0 {
161 opt, opts = head(opts, ",")
162
163 if k, v := head(opt, "="); k == "default" {
164 setOpt.isDefaultExists = true
165 setOpt.defaultValue = v
166
167 // convert semicolon-separated default values to csv-separated values for processing in setByForm
168 if field.Type.Kind() == reflect.Slice || field.Type.Kind() == reflect.Array {
169 cfTag := field.Tag.Get("collection_format")
170 if cfTag == "" || cfTag == "multi" || cfTag == "csv" {
171 setOpt.defaultValue = strings.ReplaceAll(v, ";", ",")
172 }
173 }
174 } else if k, v = head(opt, "="); k == "parser" {
175 setOpt.parser = v
176 }
177 }
178
179 return setter.TrySet(value, field, tagValue, setOpt)
180}
181
182// BindUnmarshaler is the interface used to wrap the UnmarshalParam method.
183type BindUnmarshaler interface {

Callers 1

mappingFunction · 0.85

Calls 3

headFunction · 0.85
TrySetMethod · 0.65
GetMethod · 0.45

Tested by

no test coverage detected