MCPcopy Create free account
hub / github.com/devfeel/mapper / setFieldValue

Method setFieldValue

mapper_object_internal.go:186–301  ·  view source on GitHub ↗
(fieldValue reflect.Value, fieldKind reflect.Kind, value interface{})

Source from the content-addressed store, hash-verified

184}
185
186func (dm *mapperObject) setFieldValue(fieldValue reflect.Value, fieldKind reflect.Kind, value interface{}) error {
187 switch fieldKind {
188 case reflect.Bool:
189 if value == nil {
190 fieldValue.SetBool(false)
191 } else if v, ok := value.(bool); ok {
192 fieldValue.SetBool(v)
193 } else {
194 v, _ := Convert(ToString(value)).Bool()
195 fieldValue.SetBool(v)
196 }
197
198 case reflect.String:
199 if value == nil {
200 fieldValue.SetString("")
201 } else {
202 fieldValue.SetString(ToString(value))
203 }
204 case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
205 if value == nil {
206 fieldValue.SetInt(0)
207 } else {
208 val := reflect.ValueOf(value)
209 switch val.Kind() {
210 case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
211 fieldValue.SetInt(val.Int())
212 case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
213 fieldValue.SetInt(int64(val.Uint()))
214 default:
215 v, _ := Convert(ToString(value)).Int64()
216 fieldValue.SetInt(v)
217 }
218 }
219 case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
220 if value == nil {
221 fieldValue.SetUint(0)
222 } else {
223 val := reflect.ValueOf(value)
224 switch val.Kind() {
225 case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
226 fieldValue.SetUint(uint64(val.Int()))
227 case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
228 fieldValue.SetUint(val.Uint())
229 default:
230 v, _ := Convert(ToString(value)).Uint64()
231 fieldValue.SetUint(v)
232 }
233 }
234 case reflect.Float64, reflect.Float32:
235 if value == nil {
236 fieldValue.SetFloat(0)
237 } else {
238 val := reflect.ValueOf(value)
239 switch val.Kind() {
240 case reflect.Float64:
241 fieldValue.SetFloat(val.Float())
242 default:
243 v, _ := Convert(ToString(value)).Float64()

Callers 1

MapperMapMethod · 0.95

Calls 13

ConvertTypeAlias · 0.85
ToStringFunction · 0.85
JSONTimeTypeAlias · 0.85
UnixToTimeLocationFunction · 0.85
BoolMethod · 0.80
IntMethod · 0.80
UintMethod · 0.80
Int64Method · 0.80
Uint64Method · 0.80
Float64Method · 0.80
SetMethod · 0.80
IsTypeMethod · 0.65

Tested by

no test coverage detected