added ToSpecificedInterfaceWithError func
This commit is contained in:
parent
8c9545af88
commit
90d3d07fb0
70
caste.go
70
caste.go
@ -1247,3 +1247,73 @@ func jsonStringToObject(s string, v interface{}) error {
|
|||||||
data := []byte(s)
|
data := []byte(s)
|
||||||
return json.Unmarshal(data, v)
|
return json.Unmarshal(data, v)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// StringToSpecificedInterfaceWithError casts string value to given data type
|
||||||
|
func StringToSpecificedInterfaceWithError(dataType string, value string) (interface{}, error) {
|
||||||
|
return ToSpecificedInterfaceWithError(dataType, value)
|
||||||
|
}
|
||||||
|
|
||||||
|
// StringSliceToSpecificedInterfaceWithError casts string slice to given data type
|
||||||
|
func StringSliceToSpecificedInterfaceWithError(dataType string, value []string) (interface{}, error) {
|
||||||
|
return ToSpecificedInterfaceWithError(dataType, value)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ToSpecificedInterfaceWithError casts the interface to given data type
|
||||||
|
func ToSpecificedInterfaceWithError(dataType string, i interface{}) (interface{}, error) {
|
||||||
|
switch strings.ToLower(dataType) {
|
||||||
|
case "bool":
|
||||||
|
return ToBoolE(i)
|
||||||
|
case "boolslice", "bool_slice", "[]bool":
|
||||||
|
return ToBoolSliceE(i)
|
||||||
|
case "duration":
|
||||||
|
return ToDurationE(i)
|
||||||
|
case "durationslice", "duration_slice", "[]duration":
|
||||||
|
return ToDurationSliceE(i)
|
||||||
|
case "float32":
|
||||||
|
return ToFloat32E(i)
|
||||||
|
case "float64":
|
||||||
|
return ToFloat64E(i)
|
||||||
|
case "int":
|
||||||
|
return ToIntE(i)
|
||||||
|
case "int8":
|
||||||
|
return ToInt8E(i)
|
||||||
|
case "int16":
|
||||||
|
return ToInt16E(i)
|
||||||
|
case "int32":
|
||||||
|
return ToInt32E(i)
|
||||||
|
case "int64":
|
||||||
|
return ToInt64E(i)
|
||||||
|
case "intslice", "int_slice", "[]int":
|
||||||
|
return ToIntSliceE(i)
|
||||||
|
case "slice":
|
||||||
|
return ToSliceE(i)
|
||||||
|
case "string":
|
||||||
|
return ToStringE(i)
|
||||||
|
case "stringmap", "string_map", "map[string]interface{}":
|
||||||
|
return ToStringMapE(i)
|
||||||
|
case "stringmapbool", "string_map_bool", "map[string]bool":
|
||||||
|
return ToStringMapBoolE(i)
|
||||||
|
case "stringmapint", "string_map_int", "map[string]int":
|
||||||
|
return ToStringMapIntE(i)
|
||||||
|
case "stringmapint64", "string_map_int64", "map[string]int64":
|
||||||
|
return ToStringMapInt64E(i)
|
||||||
|
case "stringmapstring", "string_map_string", "map[string]string":
|
||||||
|
return ToStringMapStringE(i)
|
||||||
|
case "stringmapstringslice", "string_map_string_slice", "map[string][]string":
|
||||||
|
return ToStringMapStringSliceE(i)
|
||||||
|
case "stringslice", "string_slice", "[]string":
|
||||||
|
return ToStringSliceE(i)
|
||||||
|
case "time":
|
||||||
|
return ToTimeE(i)
|
||||||
|
case "uint":
|
||||||
|
return ToUintE(i)
|
||||||
|
case "uint8":
|
||||||
|
return ToUint8E(i)
|
||||||
|
case "uint16":
|
||||||
|
return ToUint16E(i)
|
||||||
|
case "uint32":
|
||||||
|
return ToUint32E(i)
|
||||||
|
default:
|
||||||
|
return nil, fmt.Errorf("unable to cast %#v to %v", i, dataType)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user