54 lines
1004 B
Go
54 lines
1004 B
Go
// Package wrapper ...
|
|
//
|
|
// Description : wrapper ...
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 2023-06-01 18:33
|
|
package wrapper
|
|
|
|
import (
|
|
"encoding/json"
|
|
"reflect"
|
|
)
|
|
|
|
// ObjectData 对象类型, 支持 nil / Map / Struct
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 18:36 2023/6/1
|
|
func ObjectData(data interface{}) *ObjectType {
|
|
ot := &ObjectType{
|
|
source: data,
|
|
data: map[interface{}]interface{}{},
|
|
byteData: []byte{},
|
|
isValid: true,
|
|
}
|
|
if nil == ot {
|
|
return ot
|
|
}
|
|
reflectType := reflect.TypeOf(data)
|
|
switch reflectType.Kind() {
|
|
case reflect.Map:
|
|
fallthrough
|
|
case reflect.Struct:
|
|
ot.byteData, _ = json.Marshal(ot.source)
|
|
default:
|
|
// 数据类型不是 nil / map / struct 质疑
|
|
ot.isValid = false
|
|
}
|
|
return ot
|
|
}
|
|
|
|
// ObjectType ...
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 18:38 2023/6/1
|
|
type ObjectType struct {
|
|
source interface{}
|
|
data map[interface{}]interface{}
|
|
byteData []byte
|
|
isValid bool
|
|
}
|