From 734d9a9f77339ea2f378d73439bdff352ebfcbf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Fri, 21 Mar 2025 18:15:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=8E=B7=E5=8F=96=E5=90=84?= =?UTF-8?q?=E7=A7=8D=E6=95=B0=E6=8D=AE=E7=B1=BB=E5=9E=8B=E7=9A=84=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E5=80=BC=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data_type.go | 120 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) diff --git a/data_type.go b/data_type.go index 09ace11..cfb4030 100644 --- a/data_type.go +++ b/data_type.go @@ -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) +}