Compare commits
4 Commits
c641e6003b
...
0a9175daa8
Author | SHA1 | Date | |
---|---|---|---|
0a9175daa8 | |||
3432f85c3d | |||
160f464d15 | |||
8b1a515cb9 |
90
any.go
90
any.go
@ -7,7 +7,10 @@
|
|||||||
// Date : 2023-06-01 18:18
|
// Date : 2023-06-01 18:18
|
||||||
package wrapper
|
package wrapper
|
||||||
|
|
||||||
import "reflect"
|
import (
|
||||||
|
"git.zhangdeman.cn/zhangdeman/serialize"
|
||||||
|
"reflect"
|
||||||
|
)
|
||||||
|
|
||||||
// AnyDataType ...
|
// AnyDataType ...
|
||||||
//
|
//
|
||||||
@ -15,9 +18,11 @@ import "reflect"
|
|||||||
//
|
//
|
||||||
// Date : 18:19 2023/6/1
|
// Date : 18:19 2023/6/1
|
||||||
func AnyDataType(data interface{}) *AnyType {
|
func AnyDataType(data interface{}) *AnyType {
|
||||||
return &AnyType{
|
at := &AnyType{
|
||||||
data: data,
|
data: data,
|
||||||
}
|
}
|
||||||
|
at.dataType = at.Type()
|
||||||
|
return at
|
||||||
}
|
}
|
||||||
|
|
||||||
// AnyType ...
|
// AnyType ...
|
||||||
@ -26,7 +31,8 @@ func AnyDataType(data interface{}) *AnyType {
|
|||||||
//
|
//
|
||||||
// Date : 18:19 2023/6/1
|
// Date : 18:19 2023/6/1
|
||||||
type AnyType struct {
|
type AnyType struct {
|
||||||
data interface{}
|
data interface{}
|
||||||
|
dataType string
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsNil 是否为 nil
|
// IsNil 是否为 nil
|
||||||
@ -44,23 +50,33 @@ func (at *AnyType) IsNil() bool {
|
|||||||
//
|
//
|
||||||
// Date : 18:22 2023/6/1
|
// Date : 18:22 2023/6/1
|
||||||
func (at *AnyType) Type() string {
|
func (at *AnyType) Type() string {
|
||||||
|
if len(at.dataType) > 0 {
|
||||||
|
// 已经处理过的,无需在处理
|
||||||
|
return at.dataType
|
||||||
|
}
|
||||||
if at.IsNil() {
|
if at.IsNil() {
|
||||||
return DataTypeNil
|
return DataTypeNil
|
||||||
}
|
}
|
||||||
reflectType := reflect.TypeOf(at.data)
|
reflectType := reflect.TypeOf(at.data)
|
||||||
switch reflectType.Kind() {
|
switch reflectType.Kind() {
|
||||||
case reflect.Slice:
|
case reflect.String:
|
||||||
return DataTypeAnySlice
|
return DataTypeString
|
||||||
case reflect.Array:
|
case reflect.Slice, reflect.Array:
|
||||||
return DataTypeAnySlice
|
return DataTypeSlice
|
||||||
case reflect.Map:
|
case reflect.Map, reflect.Struct:
|
||||||
return DataTypeAnyObject
|
return DataTypeObject
|
||||||
case reflect.Struct:
|
|
||||||
return DataTypeAnyObject
|
|
||||||
case reflect.Pointer:
|
case reflect.Pointer:
|
||||||
return DataTypePtr
|
return DataTypePtr
|
||||||
|
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
|
||||||
|
return DataTypeInt
|
||||||
|
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
|
||||||
|
return DataTypeUint
|
||||||
|
case reflect.Bool:
|
||||||
|
return DataTypeBool
|
||||||
|
case reflect.Float32, reflect.Float64:
|
||||||
|
return DataTypeFloat
|
||||||
default:
|
default:
|
||||||
return reflectType.Kind().String()
|
return DataTypeUnknown
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -69,6 +85,52 @@ func (at *AnyType) Type() string {
|
|||||||
// Author : go_developer@163.com<白茶清欢>
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
//
|
//
|
||||||
// Date : 18:32 2023/6/1
|
// Date : 18:32 2023/6/1
|
||||||
func (at *AnyType) ToString() string {
|
func (at *AnyType) ToString() String {
|
||||||
return ""
|
switch at.dataType {
|
||||||
|
case DataTypeNil:
|
||||||
|
return String("")
|
||||||
|
case DataTypeObject:
|
||||||
|
fallthrough
|
||||||
|
case DataTypeSlice:
|
||||||
|
fallthrough
|
||||||
|
case DataTypePtr:
|
||||||
|
return String(serialize.JSON.MarshalForString(at.data))
|
||||||
|
}
|
||||||
|
return String("")
|
||||||
|
}
|
||||||
|
|
||||||
|
// ToObject 任意类型转为对象
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 17:19 2023/10/11
|
||||||
|
func (at *AnyType) ToObject() MapResult {
|
||||||
|
return MapResult{
|
||||||
|
Value: EasyMapFromString(at.ToString().Value()),
|
||||||
|
Err: nil,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (at *AnyType) ToIntSlice() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (at *AnyType) ToUintSlice() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (at *AnyType) ToStringSlice() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (at *AnyType) ToFloatSlice() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (at *AnyType) ToBoolSlice() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (at *AnyType) ToAnySlice() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
39
define.go
39
define.go
@ -12,41 +12,14 @@ import "time"
|
|||||||
const (
|
const (
|
||||||
DataTypeUnknown = "unknown"
|
DataTypeUnknown = "unknown"
|
||||||
DataTypeNil = "nil"
|
DataTypeNil = "nil"
|
||||||
DataTypeAny = "interface"
|
|
||||||
DataTypePtr = "ptr"
|
DataTypePtr = "ptr"
|
||||||
|
DataTypeString = "string"
|
||||||
DataTypeString = "string"
|
DataTypeInt = "int"
|
||||||
|
DataTypeUint = "uint"
|
||||||
DataTypeInt8 = "int8"
|
DataTypeBool = "bool"
|
||||||
DataTypeInt16 = "int16"
|
|
||||||
DataTypeInt32 = "int32"
|
|
||||||
DataTypeInt64 = "int64"
|
|
||||||
DataTypeInt = "int"
|
|
||||||
|
|
||||||
DataTypeUint8 = "uint8"
|
|
||||||
DataTypeUint16 = "uint16"
|
|
||||||
DataTypeUint32 = "uint32"
|
|
||||||
DataTypeUint64 = "uint64"
|
|
||||||
DataTypeUint = "uint"
|
|
||||||
|
|
||||||
DataTypeBool = "bool"
|
|
||||||
|
|
||||||
DataTypeNumber = "number"
|
|
||||||
|
|
||||||
DataTypeFloat32 = "float32"
|
|
||||||
DataTypeFloat64 = "float64"
|
|
||||||
DataTypeDouble = "double"
|
|
||||||
DataTypeFloat = "float"
|
DataTypeFloat = "float"
|
||||||
|
DataTypeSlice = "slice"
|
||||||
DataTypeIntSlice = "[]int"
|
DataTypeObject = "object"
|
||||||
DataTypeUntSlice = "[]uint"
|
|
||||||
DataTypeNumberSlice = "[]number"
|
|
||||||
DataTypeFloatSlice = "[]float"
|
|
||||||
DataTypeBoolSlice = "[]bool"
|
|
||||||
DataTypeAnySlice = "[]interface"
|
|
||||||
|
|
||||||
DataTypeObject = "map[string]interface"
|
|
||||||
DataTypeAnyObject = "map[interface]interface"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Int8Result ...
|
// Int8Result ...
|
||||||
|
Loading…
Reference in New Issue
Block a user