Merge 90d3d07fb0 into 1ffadf5510
				
					
				
			This commit is contained in:
		
						commit
						a075c5831a
					
				
							
								
								
									
										70
									
								
								caste.go
									
									
									
									
									
								
							
							
						
						
									
										70
									
								
								caste.go
									
									
									
									
									
								
							@ -1247,3 +1247,73 @@ func jsonStringToObject(s string, v interface{}) error {
 | 
			
		||||
	data := []byte(s)
 | 
			
		||||
	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