// Package consts ... // // Description : consts ... // // Author : go_developer@163.com<白茶清欢> // // Date : 2024-04-08 16:33 package consts // DataType 数据类型枚举值 // // Author : go_developer@163.com<白茶清欢> // // Date : 14:10 2024/11/25 type DataType string func (df *DataType) String() string { return string(*df) } func (df *DataType) MarshalJSON() ([]byte, error) { return []byte(df.String()), nil } // IsValid 判断枚举值是否有效 // // Author : go_developer@163.com<白茶清欢> // // Date : 14:45 2024/11/25 func (df *DataType) IsValid() bool { for _, item := range DataTypeList { if item.Value == *df { return true } } return false } var ( DataTypeUnknown DataType = "unknown" // 位置数据类型 DataTypeNil DataType = "nil" // nil DataTypePtr DataType = "ptr" // 指针 DataTypeInt DataType = "int" // int类型 -> int64 DataTypeInt8 DataType = "int8" // int8类型 DataTypeInt16 DataType = "int16" // int16类型 DataTypeInt32 DataType = "int32" // int32类型 DataTypeInt64 DataType = "int64" // int64类型 DataTypeUint DataType = "uint" // uint类型 -> uint64 DataTypeUint8 DataType = "uint8" // uint8类型 DataTypeUint16 DataType = "uint16" // uint16类型 DataTypeUint32 DataType = "uint32" // uint32类型 DataTypeUint64 DataType = "uint64" // uint64类型 DataTypeFloat32 DataType = "float32" // float32类型 DataTypeFloat64 DataType = "float64" // float64类型 DataTypeBool DataType = "bool" // bool类型 DataTypeString DataType = "string" // 字符串类型 DataTypeSliceAny DataType = "[]any" // any数组 -> []any DataTypeSliceAnyWithMarshal DataType = "[]any_marshal" // any数组 -> []any, json序列化之后的结构 DataTypeSliceInt DataType = "[]int" // int数组 -> []int64 DataTypeSliceIntWithChar DataType = "[]int_split" // int数组 -> []int64, 按照指定字符切割 DataTypeSliceIntWithMarshal DataType = "[]int_marshal" // int数组 -> []int64, json序列化之后的结果 DataTypeSliceUint DataType = "[]uint" // uint数组 -> []uint64 DataTypeSliceUintWithChar DataType = "[]uint_split" // uint数组 -> []uint64, 指定字符切割 DataTypeSliceUintWithMarshal DataType = "[]uint_marshal" // uint数组 -> []uint64, json序列化之后的结果 DataTypeSliceFloat DataType = "[]float" // float数组 -> []float64 DataTypeSliceFloatWithChar DataType = "[]float_split" // float数组 -> []float64, 指定字符切割 DataTypeSliceFloatWithMarshal DataType = "[]float_marshal" // float数组 -> []float64, json序列化之后的结果 DataTypeSliceBool DataType = "[]bool" // bool数组 -> []bool DataTypeSliceBoolWithChar DataType = "[]bool_split" // bool数组 -> []bool, 指定字符切割 DataTypeSliceBoolWithMarshal DataType = "[]bool_marshal" // bool数组 -> []bool, json序列化之后的结果 DataTypeSliceString DataType = "[]string" // 字符串数组 -> []string DataTypeSliceStringWithChar DataType = "[]string_split" // 字符串数组 -> []string, 指定字符切割 DataTypeSliceStringWithMarshal DataType = "[]string_marshal" // 字符串数组 -> []string, json序列化之后的结果 DataTypeSliceSlice DataType = "[][]any" // 字符串数组 -> [][]any DataTypeSliceSliceWithMarshal DataType = "[][]any_marshal" // 字符串数组 -> [][]any,json序列化之后的结果 DataTypeSliceMapAnyAny DataType = "[]map[any]any" // 字符串数组 -> []map[any]any, slice对象 DataTypeSliceMapAnyAnyWithMarshal DataType = "[]map[any]any_marshal" // 字符串数组 -> []map[any]any, json序列化后的结果 DataTypeSliceMapStringAny DataType = "[]map[string]any" // 字符串数组 -> map[string]any, slice对象 DataTypeSliceMapStringAnyWithMarshal DataType = "[]map[string]any_marshal" // 字符串数组 -> []map[string]any, slice对象, json序列化之后的结果 DataTypeMapStrInt DataType = "map[string]int" // map -> map[string]int64 DataTypeMapStrIntWithMarshal DataType = "map[string]int_marshal" // map -> map[string]int64,json序列化之后的结果 DataTypeMapStrUint DataType = "map[string]uint" // map -> map[string]uint64 DataTypeMapStrUintWithMarshal DataType = "map[string]uint_marshal" // map -> map[string]uint64, json序列化之后的结果 DataTypeMapStrFloat DataType = "map[string]float" // map -> map[string]float64 DataTypeMapStrFloatWithMarshal DataType = "map[string]float_marshal" // map -> map[string]float64, json序列化之后的结果 DataTypeMapStrBool DataType = "map[string]bool" // map -> map[string]bool DataTypeMapStrBoolWithMarshal DataType = "map[string]bool_marshal" // map -> map[string]bool,json序列换之后的结果 DataTypeMapStrAny DataType = "map[string]any" // map -> map[string]any DataTypeMapStrAnyWithMarshal DataType = "map[string]any_marshal" // map -> map[string]any, json序列化之后的结果 DataTypeMapStrStr DataType = "map[string]string" // map -> map[string]string DataTypeMapStrStrWithMarshal DataType = "map[string]string_marshal" // map -> map[string]string, json序列化之后的结果 DataTypeMapAnyAny DataType = "map[any]any" // map -> map[any]any DataTypeMapAnyAnyWithMarshal DataType = "map[any]any_marshal" // map -> map[any]any, json序列化之后的结果 DataTypeMapStrSlice DataType = "map[string][]any" // map -> map[string][]any DataTypeMapStrSliceWithMarshal DataType = "map[string][]any_marshal" // map -> map[string][]any, json 序列化之后的结果 DataTypeAny DataType = "any" // 任意类型 -> any DataTypeStringPtr DataType = "string_ptr" // *string, 字符串指针 DataTypeIntPtr DataType = "int_ptr" // *int64, int64指针 DataTypeInt8Ptr DataType = "int8_ptr" // *int8, int8指针 DataTypeInt16Ptr DataType = "int16_ptr" // *int16, int16指针 DataTypeInt32Ptr DataType = "int32_ptr" // *int32, int32指针 DataTypeInt64Ptr DataType = "int64_ptr" // *int64, int64指针 DataTypeUintPtr DataType = "uint_ptr" // *uint64, uint64指针 DataTypeUint8Ptr DataType = "uint8_ptr" // *uint8, uint8指针 DataTypeUint16Ptr DataType = "uint16_ptr" // *uint16, uint16指针 DataTypeUint32Ptr DataType = "uint32_ptr" // *uint32, uint32指针 DataTypeUint64Ptr DataType = "uint64_ptr" // *uint64, uint64指针 DataTypeFloat32Ptr DataType = "float32_ptr" // *float32, float32指针 DataTypeFloat64Ptr DataType = "float64_ptr" // *float64, float64指针 DataTypeBoolPtr DataType = "bool_ptr" // *bool, 字符串指针 ) const ( DataStatusNotFound = "NOT_FOUND" DataStatusIsNil = "IS_NIL" DataStatusIsZero = "IS_ZERO" DataStatusIsEmpty = "IS_EMPTY" DataStatusIsFalse = "IS_FALSE" ) const ( DataSliceModelReal = "REAL" DataSliceModelMarshal = "MARSHAL" DataSliceModelWithSplitChar = "WITH_SPLIT_CHAR" ) const ( DataMapModelReal = "REAL" DataMapModelMarshal = "MARSHAL" ) // DataTypeDesc 数据类型描述 // // Author : go_developer@163.com<白茶清欢> // // Date : 13:22 2024/6/23 type DataTypeDesc struct { Value DataType `json:"value"` // 具体数据类型 Description string `json:"description"` // 数据类型描述 } var ( DataTypeList = []DataTypeDesc{ // 基础数据类型 getDataTypeDesc(DataTypeAny, "任意数据类型"), getDataTypeDesc(DataTypeInt, "int类型"), getDataTypeDesc(DataTypeInt8, "int8类型"), getDataTypeDesc(DataTypeInt16, "int16类型"), getDataTypeDesc(DataTypeInt32, "int32类型"), getDataTypeDesc(DataTypeInt64, "int64类型"), getDataTypeDesc(DataTypeUint, "uint类型"), getDataTypeDesc(DataTypeUint8, "uint8类型"), getDataTypeDesc(DataTypeUint16, "uint16类型"), getDataTypeDesc(DataTypeUint32, "uint32类型"), getDataTypeDesc(DataTypeUint64, "uint64类型"), getDataTypeDesc(DataTypeFloat32, "float32类型"), getDataTypeDesc(DataTypeFloat64, "float64类型"), getDataTypeDesc(DataTypeBool, "bool类型"), getDataTypeDesc(DataTypeString, "字符串类型"), // map数据类型 getDataTypeDesc(DataTypeMapStrAny, "map[string]any"), getDataTypeDesc(DataTypeMapStrAnyWithMarshal, "map[string]any json序列化之后的结果"), getDataTypeDesc(DataTypeMapStrInt, "map[string]int64"), getDataTypeDesc(DataTypeMapStrIntWithMarshal, "map[string]int64 json序列化之后的结果"), getDataTypeDesc(DataTypeMapStrUint, "map[string]uint64"), getDataTypeDesc(DataTypeMapStrUintWithMarshal, "map[string]uint64 json序列化之后的结果"), getDataTypeDesc(DataTypeMapStrFloat, "map[string]float64"), getDataTypeDesc(DataTypeMapStrFloatWithMarshal, "map[string]float64 json序列化之后的结果"), getDataTypeDesc(DataTypeMapStrBool, "map[string]bool"), getDataTypeDesc(DataTypeMapStrBoolWithMarshal, "map[string]bool json序列化之后的结果"), getDataTypeDesc(DataTypeMapStrStr, "map[string]string"), getDataTypeDesc(DataTypeMapStrStrWithMarshal, "map[string]string json序列化之后的结果"), getDataTypeDesc(DataTypeMapAnyAny, "map[any]any"), getDataTypeDesc(DataTypeMapAnyAnyWithMarshal, "map[any]any json序列化之后的结果"), getDataTypeDesc(DataTypeMapStrSlice, "map[string][]any"), getDataTypeDesc(DataTypeMapStrSliceWithMarshal, "map[string][]any json序列化之后的结果"), // slice数据类型 getDataTypeDesc(DataTypeSliceAny, "[]any"), getDataTypeDesc(DataTypeSliceString, "[]string"), getDataTypeDesc(DataTypeSliceStringWithChar, "[]string 按照指定字符切割"), getDataTypeDesc(DataTypeSliceStringWithMarshal, "[]string json序列化之后的结果"), getDataTypeDesc(DataTypeSliceAnyWithMarshal, "[]any json序列化之后的结果"), getDataTypeDesc(DataTypeSliceInt, "[]int"), getDataTypeDesc(DataTypeSliceIntWithChar, "[]int 按照指定字符切割"), getDataTypeDesc(DataTypeSliceIntWithMarshal, "[]int json序列化之后的结果"), getDataTypeDesc(DataTypeSliceUint, "[]uint"), getDataTypeDesc(DataTypeSliceUintWithChar, "[]uint 按照指定字符切割"), getDataTypeDesc(DataTypeSliceUintWithMarshal, "[]uint json序列化之后的结果"), getDataTypeDesc(DataTypeSliceFloat, "[]float"), getDataTypeDesc(DataTypeSliceFloatWithChar, "[]float 按照指定字符切割"), getDataTypeDesc(DataTypeSliceFloatWithMarshal, "[]float json序列化之后的结果"), getDataTypeDesc(DataTypeSliceBool, "[]bool"), getDataTypeDesc(DataTypeSliceBoolWithChar, "[]bool 按照指定字符切割"), getDataTypeDesc(DataTypeSliceBoolWithMarshal, "[]bool json序列化之后的结果"), getDataTypeDesc(DataTypeSliceSlice, "[][]any"), getDataTypeDesc(DataTypeSliceSliceWithMarshal, "[][]any json序列化之后的结果"), getDataTypeDesc(DataTypeSliceMapStringAny, "[][]map[string]any"), getDataTypeDesc(DataTypeSliceMapStringAnyWithMarshal, "[][]map[string]any json序列化之后的结果"), getDataTypeDesc(DataTypeSliceMapAnyAny, "[]map[any]any"), getDataTypeDesc(DataTypeSliceMapAnyAnyWithMarshal, "[]map[any]any json序列化之后的结果"), // 基础类型的指针类型 getDataTypeDesc(DataTypeStringPtr, "*string, 字符串指针"), getDataTypeDesc(DataTypeUintPtr, "*uint, uint指针"), getDataTypeDesc(DataTypeUintPtr, "*uint8, uint8指针"), getDataTypeDesc(DataTypeUintPtr, "*uint16, uint16指针"), getDataTypeDesc(DataTypeUintPtr, "*uint32, uint32指针"), getDataTypeDesc(DataTypeUintPtr, "*uint64, uint64指针"), getDataTypeDesc(DataTypeIntPtr, "*int, int指针"), getDataTypeDesc(DataTypeIntPtr, "*int8, int8指针"), getDataTypeDesc(DataTypeIntPtr, "*int16, int16指针"), getDataTypeDesc(DataTypeIntPtr, "*int32, int32指针"), getDataTypeDesc(DataTypeIntPtr, "*int64, int64指针"), getDataTypeDesc(DataTypeFloat32Ptr, "*float32, float32指针"), getDataTypeDesc(DataTypeFloat32Ptr, "*float64, float64指针"), getDataTypeDesc(DataTypeBoolPtr, "*bool, 字符串指针"), } ) // getDataTypeDesc ... // // Author : go_developer@163.com<白茶清欢> // // Date : 13:24 2024/6/23 func getDataTypeDesc(value DataType, description string) DataTypeDesc { return DataTypeDesc{ Value: value, Description: description, } } var ( // DataTypeBaseNumber 基础的int类型 DataTypeBaseNumber = []DataType{ DataTypeInt, DataTypeInt8, DataTypeInt16, DataTypeInt32, DataTypeInt64, DataTypeUint, DataTypeUint8, DataTypeUint16, DataTypeUint32, DataTypeUint64, DataTypeFloat32, DataTypeFloat64, DataTypeIntPtr, DataTypeInt8Ptr, DataTypeInt16Ptr, DataTypeInt32Ptr, DataTypeInt64Ptr, DataTypeUintPtr, DataTypeUint8Ptr, DataTypeUint16Ptr, DataTypeUint32Ptr, DataTypeUint64Ptr, DataTypeFloat32Ptr, DataTypeFloat64Ptr, } DataTypeBaseInt = []DataType{ DataTypeInt, DataTypeInt8, DataTypeInt16, DataTypeInt32, DataTypeInt64, DataTypeIntPtr, DataTypeInt8Ptr, DataTypeInt16Ptr, DataTypeInt32Ptr, DataTypeInt64Ptr, } DataTypeBaseUint = []DataType{ DataTypeUint, DataTypeUint8, DataTypeUint16, DataTypeUint32, DataTypeUint64, DataTypeUintPtr, DataTypeUint8Ptr, DataTypeUint16Ptr, DataTypeUint32Ptr, DataTypeUint64Ptr, } DataTypeBaseFloat = []DataType{DataTypeFloat32, DataTypeFloat64, DataTypeFloat32Ptr, DataTypeFloat64Ptr} DataTypeBaseString = []DataType{DataTypeString, DataTypeStringPtr} DataTypeBaseBool = []DataType{DataTypeBool, DataTypeBoolPtr} DataTypeSliceMarshal = []DataType{ DataTypeSliceAnyWithMarshal, DataTypeSliceIntWithMarshal, DataTypeSliceUintWithMarshal, DataTypeSliceFloatWithMarshal, DataTypeSliceBoolWithMarshal, DataTypeSliceMapAnyAnyWithMarshal, DataTypeSliceMapStringAnyWithMarshal, DataTypeSliceAnyWithMarshal, DataTypeSliceSliceWithMarshal, } DataTypeSliceSplit = []DataType{ DataTypeSliceIntWithChar, DataTypeSliceUintWithChar, DataTypeSliceFloatWithChar, DataTypeSliceBoolWithChar, DataTypeSliceStringWithChar, } DataTypeSlice = []DataType{ DataTypeSliceString, DataTypeSliceAny, DataTypeSliceBool, DataTypeSliceMapStringAny, DataTypeSliceInt, DataTypeSliceUint, DataTypeSliceFloat, DataTypeSliceMapAnyAny, DataTypeSliceSlice, } DataTypeMap = []DataType{ DataTypeMapStrAny, DataTypeMapAnyAny, DataTypeMapStrBool, DataTypeMapStrInt, DataTypeMapStrFloat, DataTypeMapStrUint, DataTypeMapStrSlice, DataTypeMapStrStr, } DataTypeMapMarshal = []DataType{ DataTypeMapStrAnyWithMarshal, DataTypeMapAnyAnyWithMarshal, DataTypeMapStrBoolWithMarshal, DataTypeMapStrIntWithMarshal, DataTypeMapStrFloatWithMarshal, DataTypeMapStrUintWithMarshal, DataTypeMapStrSliceWithMarshal, DataTypeMapStrStrWithMarshal, } ) func getMergeDataTypeList(dataTypeList ...[]DataType) []DataType { res := []DataType{} for _, dataTypeItemList := range dataTypeList { res = append(res, dataTypeItemList...) } return res }