增加获取各种数据类型的默认值方法

This commit is contained in:
白茶清欢 2025-03-21 18:15:44 +08:00
parent 1aad276c88
commit 734d9a9f77

@ -310,3 +310,123 @@ func getMergeDataTypeList(dataTypeList ...[]DataType) []DataType {
}
return res
}
// GetDataTypeDefaultValue 获取不同类型的默认值
func GetDataTypeDefaultValue(dataType string) any {
switch dataType {
case DataTypeInt.String():
return int(0)
case DataTypeInt8.String():
return int8(0)
case DataTypeInt16.String():
return int16(0)
case DataTypeInt32.String():
return int32(0)
case DataTypeInt64.String():
return int64(0)
case DataTypeUint.String():
return uint(0)
case DataTypeUint8.String():
return uint8(0)
case DataTypeUint16.String():
return uint16(0)
case DataTypeUint32.String():
return uint32(0)
case DataTypeUint64.String():
return uint64(0)
case DataTypeFloat32.String():
return float32(0)
case DataTypeFloat64.String():
return float64(0)
case DataTypeBool.String():
return false
case DataTypeString.String():
return ""
case DataTypeIntPtr.String():
return new(int)
case DataTypeInt8Ptr.String():
return new(int8)
case DataTypeInt16Ptr.String():
return new(int16)
case DataTypeInt32Ptr.String():
return new(int32)
case DataTypeInt64Ptr.String():
return new(int64)
case DataTypeUintPtr.String():
return new(uint)
case DataTypeUint8Ptr.String():
return new(uint8)
case DataTypeUint16Ptr.String():
return new(uint16)
case DataTypeUint32Ptr.String():
return new(uint32)
case DataTypeUint64Ptr.String():
return new(uint64)
case DataTypeFloat32Ptr.String():
return new(float32)
case DataTypeFloat64Ptr.String():
return new(float64)
case DataTypeBoolPtr.String():
return new(bool)
case DataTypeMapStrAny.String():
return new(map[string]any)
case DataTypeMapAnyAny.String():
return new(map[any]any)
case DataTypeMapStrBool.String():
return new(map[string]bool)
case DataTypeMapStrInt.String():
return new(map[string]int)
case DataTypeMapStrFloat.String():
return new(map[string]float64)
case DataTypeMapStrUint.String():
return new(map[string]uint)
case DataTypeMapStrSlice.String():
return new(map[string][]any)
case DataTypeMapStrStr.String():
return new(map[string]string)
case DataTypeSliceAny.String():
return new([]any)
case DataTypeSliceString.String():
return new([]string)
case DataTypeSliceBool.String():
return new([]bool)
case DataTypeSliceInt.String():
return new([]int)
case DataTypeSliceUint.String():
return new([]uint)
case DataTypeSliceFloat.String():
return new([]float64)
case DataTypeSliceMapAnyAny.String():
// map[any]any 序列化会有问题,当做 map[string]any 处理
return new([]map[string]any)
case DataTypeSliceMapStringAny.String():
return new([]map[string]any)
default:
// 序列化之后的map
for _, dataTypeItem := range DataTypeMapMarshal {
if dataTypeItem.String() == dataType {
return ""
}
}
// 序列化之后的slice
for _, dataTypeItem := range DataTypeSliceMarshal {
if dataTypeItem.String() == dataType {
return ""
}
}
// 指定分隔符分割的slice
for _, dataTypeItem := range DataTypeSliceSplit {
if dataTypeItem.String() == dataType {
return ""
}
}
// 未枚举的slice类型用any接收
for _, dataTypeItem := range DataTypeSlice {
if dataTypeItem.String() == dataType {
return new([]any)
}
}
}
// 未枚举的一律用any接收
return *new(any)
}