Merge branch 'develop' of github.com:gin-gonic/gin into develop
This commit is contained in:
		| @ -114,18 +114,54 @@ func mapForm(ptr interface{}, form map[string][]string) error { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func setIntField(val string, bitSize int, structField reflect.Value) error { | ||||
| 	if val == "" { | ||||
| 		val = "0" | ||||
| 	} | ||||
|  | ||||
| 	intVal, err := strconv.ParseInt(val, 10, bitSize) | ||||
| 	if err == nil { | ||||
| 		structField.SetInt(intVal) | ||||
| 	} | ||||
|  | ||||
| 	return err | ||||
| } | ||||
|  | ||||
| func setUintField(val string, bitSize int, structField reflect.Value) error { | ||||
| 	if val == "" { | ||||
| 		val = "0" | ||||
| 	} | ||||
|  | ||||
| 	uintVal, err := strconv.ParseUint(val, 10, bitSize) | ||||
| 	if err == nil { | ||||
| 		structField.SetUint(uintVal) | ||||
| 	} | ||||
|  | ||||
| 	return err | ||||
| } | ||||
|  | ||||
| func setWithProperType(valueKind reflect.Kind, val string, structField reflect.Value) error { | ||||
| 	switch valueKind { | ||||
| 	case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: | ||||
| 		if val == "" { | ||||
| 			val = "0" | ||||
| 		} | ||||
| 		intVal, err := strconv.Atoi(val) | ||||
| 		if err != nil { | ||||
| 			return err | ||||
| 		} else { | ||||
| 			structField.SetInt(int64(intVal)) | ||||
| 		} | ||||
| 	case reflect.Int: | ||||
| 		return setIntField(val, 0, structField) | ||||
| 	case reflect.Int8: | ||||
| 		return setIntField(val, 8, structField) | ||||
| 	case reflect.Int16: | ||||
| 		return setIntField(val, 16, structField) | ||||
| 	case reflect.Int32: | ||||
| 		return setIntField(val, 32, structField) | ||||
| 	case reflect.Int64: | ||||
| 		return setIntField(val, 64, structField) | ||||
| 	case reflect.Uint: | ||||
| 		return setUintField(val, 0, structField) | ||||
| 	case reflect.Uint8: | ||||
| 		return setUintField(val, 8, structField) | ||||
| 	case reflect.Uint16: | ||||
| 		return setUintField(val, 16, structField) | ||||
| 	case reflect.Uint32: | ||||
| 		return setUintField(val, 32, structField) | ||||
| 	case reflect.Uint64: | ||||
| 		return setUintField(val, 64, structField) | ||||
| 	case reflect.Bool: | ||||
| 		if val == "" { | ||||
| 			val = "false" | ||||
|  | ||||
		Reference in New Issue
	
	Block a user