added ToSpecificedInterfaceWithError func
This commit is contained in:
		
							джерело
							
								
									8c9545af88
								
							
						
					
					
						коміт
						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)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Завантаження…
	
		Посилання в новій задачі
	
	Block a user