Home / Function/ setWithProperType() — gin Function Reference

setWithProperType() — gin Function Reference

Architecture documentation for the setWithProperType() function in form_mapping.go from the gin codebase.

Function go RequestBinding FormBinding calls 8 called by 2

Entity Profile

Dependency Diagram

graph TD
  258ae74c_d8fe_39e5_de46_9ff457fed54a["setWithProperType()"]
  0bcba57f_f00e_ed0e_0516_ee30758711c8["form_mapping.go"]
  258ae74c_d8fe_39e5_de46_9ff457fed54a -->|defined in| 0bcba57f_f00e_ed0e_0516_ee30758711c8
  a3bc6e41_4537_9cf9_f14c_d1a876a83af1["setByForm()"]
  a3bc6e41_4537_9cf9_f14c_d1a876a83af1 -->|calls| 258ae74c_d8fe_39e5_de46_9ff457fed54a
  7d109b23_ce35_afaa_2c84_5f028e2f243e["setArray()"]
  7d109b23_ce35_afaa_2c84_5f028e2f243e -->|calls| 258ae74c_d8fe_39e5_de46_9ff457fed54a
  77fb8e79_5378_81f8_a5e5_43e49056cd67["trySetUsingParser()"]
  258ae74c_d8fe_39e5_de46_9ff457fed54a -->|calls| 77fb8e79_5378_81f8_a5e5_43e49056cd67
  fe1ce612_0a94_5769_acda_dde6219d8c6c["trySetCustom()"]
  258ae74c_d8fe_39e5_de46_9ff457fed54a -->|calls| fe1ce612_0a94_5769_acda_dde6219d8c6c
  496adc56_89d5_85c7_fdd1_3ebc54a8a9e8["setIntField()"]
  258ae74c_d8fe_39e5_de46_9ff457fed54a -->|calls| 496adc56_89d5_85c7_fdd1_3ebc54a8a9e8
  796a04bd_6ff3_05c1_494d_2e226f264be4["setTimeDuration()"]
  258ae74c_d8fe_39e5_de46_9ff457fed54a -->|calls| 796a04bd_6ff3_05c1_494d_2e226f264be4
  33a4e14a_8b4a_3af1_da25_1ddc5e6012bf["setUintField()"]
  258ae74c_d8fe_39e5_de46_9ff457fed54a -->|calls| 33a4e14a_8b4a_3af1_da25_1ddc5e6012bf
  7ce50cf3_9550_6e0c_e534_498117f61e43["setBoolField()"]
  258ae74c_d8fe_39e5_de46_9ff457fed54a -->|calls| 7ce50cf3_9550_6e0c_e534_498117f61e43
  0ea44f2c_e732_7d4f_ea03_c5c72e30870f["setFloatField()"]
  258ae74c_d8fe_39e5_de46_9ff457fed54a -->|calls| 0ea44f2c_e732_7d4f_ea03_c5c72e30870f
  034b9427_1fc8_bb5c_9530_6a9ec5654a35["setTimeField()"]
  258ae74c_d8fe_39e5_de46_9ff457fed54a -->|calls| 034b9427_1fc8_bb5c_9530_6a9ec5654a35
  style 258ae74c_d8fe_39e5_de46_9ff457fed54a fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

binding/form_mapping.go lines 323–388

func setWithProperType(val string, value reflect.Value, field reflect.StructField, opt setOptions) error {
	// this if-check is required for parsing nested types like []MyId, where MyId is [12]byte
	if ok, err := trySetUsingParser(val, value, opt.parser); ok {
		return err
	} else if ok, err = trySetCustom(val, value); ok {
		return err
	}

	// If it is a string type, no spaces are removed, and the user data is not modified here
	if value.Kind() != reflect.String {
		val = strings.TrimSpace(val)
	}

	switch value.Kind() {
	case reflect.Int:
		return setIntField(val, 0, value)
	case reflect.Int8:
		return setIntField(val, 8, value)
	case reflect.Int16:
		return setIntField(val, 16, value)
	case reflect.Int32:
		return setIntField(val, 32, value)
	case reflect.Int64:
		switch value.Interface().(type) {
		case time.Duration:
			return setTimeDuration(val, value)
		}
		return setIntField(val, 64, value)
	case reflect.Uint:
		return setUintField(val, 0, value)
	case reflect.Uint8:
		return setUintField(val, 8, value)
	case reflect.Uint16:
		return setUintField(val, 16, value)
	case reflect.Uint32:
		return setUintField(val, 32, value)
	case reflect.Uint64:
		return setUintField(val, 64, value)
	case reflect.Bool:
		return setBoolField(val, value)
	case reflect.Float32:
		return setFloatField(val, 32, value)
	case reflect.Float64:
		return setFloatField(val, 64, value)
	case reflect.String:
		value.SetString(val)
	case reflect.Struct:
		switch value.Interface().(type) {
		case time.Time:
			return setTimeField(val, field, value)
		case multipart.FileHeader:
			return nil
		}
		return json.API.Unmarshal(bytesconv.StringToBytes(val), value.Addr().Interface())
	case reflect.Map:
		return json.API.Unmarshal(bytesconv.StringToBytes(val), value.Addr().Interface())
	case reflect.Ptr:
		if !value.Elem().IsValid() {
			value.Set(reflect.New(value.Type().Elem()))
		}
		return setWithProperType(val, value.Elem(), field, opt)
	default:
		return errUnknownType
	}
	return nil
}

Subdomains

Frequently Asked Questions

What does setWithProperType() do?
setWithProperType() is a function in the gin codebase, defined in binding/form_mapping.go.
Where is setWithProperType() defined?
setWithProperType() is defined in binding/form_mapping.go at line 323.
What does setWithProperType() call?
setWithProperType() calls 8 function(s): setBoolField, setFloatField, setIntField, setTimeDuration, setTimeField, setUintField, trySetCustom, trySetUsingParser.
What calls setWithProperType()?
setWithProperType() is called by 2 function(s): setArray, setByForm.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free