完善any2string
This commit is contained in:
89
any.go
89
any.go
@ -9,6 +9,7 @@ package wrapper
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"git.zhangdeman.cn/zhangdeman/consts"
|
||||
"git.zhangdeman.cn/zhangdeman/serialize"
|
||||
"reflect"
|
||||
)
|
||||
@ -18,7 +19,7 @@ import (
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 18:19 2023/6/1
|
||||
func AnyDataType(data interface{}) *AnyType {
|
||||
func AnyDataType(data any) *AnyType {
|
||||
at := &AnyType{
|
||||
data: data,
|
||||
}
|
||||
@ -32,7 +33,7 @@ func AnyDataType(data interface{}) *AnyType {
|
||||
//
|
||||
// Date : 18:19 2023/6/1
|
||||
type AnyType struct {
|
||||
data interface{}
|
||||
data any
|
||||
dataType string
|
||||
}
|
||||
|
||||
@ -56,28 +57,28 @@ func (at *AnyType) Type() string {
|
||||
return at.dataType
|
||||
}
|
||||
if at.IsNil() {
|
||||
return DataTypeNil
|
||||
return consts.DataTypeNil
|
||||
}
|
||||
reflectType := reflect.TypeOf(at.data)
|
||||
switch reflectType.Kind() {
|
||||
case reflect.String:
|
||||
return DataTypeString
|
||||
return consts.DataTypeString
|
||||
case reflect.Slice, reflect.Array:
|
||||
return DataTypeSlice
|
||||
return consts.DataTypeSliceAny
|
||||
case reflect.Map, reflect.Struct:
|
||||
return DataTypeObject
|
||||
return consts.DataTypeMapAnyAny
|
||||
case reflect.Pointer:
|
||||
return DataTypePtr
|
||||
return consts.DataTypePtr
|
||||
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
|
||||
return DataTypeInt
|
||||
return consts.DataTypeInt
|
||||
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
|
||||
return DataTypeUint
|
||||
return consts.DataTypeUint
|
||||
case reflect.Bool:
|
||||
return DataTypeBool
|
||||
return consts.DataTypeBool
|
||||
case reflect.Float32, reflect.Float64:
|
||||
return DataTypeFloat
|
||||
return consts.DataTypeFloat
|
||||
default:
|
||||
return DataTypeUnknown
|
||||
return consts.DataTypeUnknown
|
||||
}
|
||||
}
|
||||
|
||||
@ -87,51 +88,27 @@ func (at *AnyType) Type() string {
|
||||
//
|
||||
// Date : 18:32 2023/6/1
|
||||
func (at *AnyType) ToString() String {
|
||||
switch at.dataType {
|
||||
case DataTypeNil:
|
||||
dataType := at.Type()
|
||||
switch dataType {
|
||||
case consts.DataTypeUnknown, consts.DataTypeNil:
|
||||
return String("")
|
||||
case DataTypeObject:
|
||||
fallthrough
|
||||
case DataTypeSlice:
|
||||
fallthrough
|
||||
case DataTypePtr:
|
||||
case consts.DataTypeString:
|
||||
return String(fmt.Sprintf("%v", at.data))
|
||||
case consts.DataTypeSliceAny:
|
||||
var val []any
|
||||
_ = serialize.JSON.Transition(at.data, &val)
|
||||
return String(ArrayType[any](val).ToString().Value)
|
||||
case consts.DataTypeMapAnyAny:
|
||||
return String(EasyMap(at.data).ToString())
|
||||
case consts.DataTypeInt:
|
||||
return String(Int(at.data.(int64)).ToString().Value)
|
||||
case consts.DataTypeUint:
|
||||
return String(Int(at.data.(uint)).ToString().Value)
|
||||
case consts.DataTypeFloat:
|
||||
return String(Float(at.data.(float64)).ToString().Value)
|
||||
case consts.DataTypeBool:
|
||||
return String(fmt.Sprintf("%v", at.data))
|
||||
default:
|
||||
return String(serialize.JSON.MarshalForString(at.data))
|
||||
}
|
||||
return String(fmt.Sprintf("%v", at.data))
|
||||
}
|
||||
|
||||
// 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() {
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user