增加struct的包装类型
This commit is contained in:
parent
5c6053d86c
commit
824c098481
10
define.go
10
define.go
@ -496,3 +496,13 @@ type AnySliceResult struct {
|
|||||||
Value []interface{}
|
Value []interface{}
|
||||||
Err error
|
Err error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MapResult 转map的结果
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 16:05 2023/8/10
|
||||||
|
type MapResult struct {
|
||||||
|
Value Map
|
||||||
|
Err error
|
||||||
|
}
|
||||||
|
34
map.go
34
map.go
@ -8,6 +8,8 @@
|
|||||||
package wrapper
|
package wrapper
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"git.zhangdeman.cn/zhangdeman/easymap"
|
"git.zhangdeman.cn/zhangdeman/easymap"
|
||||||
"reflect"
|
"reflect"
|
||||||
@ -43,6 +45,38 @@ func EasyMapWithError(mapData interface{}) (Map, error) {
|
|||||||
return m, nil
|
return m, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EasyMapFromStruct 从struct转map
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 16:11 2023/8/10
|
||||||
|
func EasyMapFromStruct(data interface{}) Map {
|
||||||
|
byteData, _ := json.Marshal(data)
|
||||||
|
return EasyMapFromByte(byteData)
|
||||||
|
}
|
||||||
|
|
||||||
|
// EasyMapFromString 从string转为Map
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 16:12 2023/8/10
|
||||||
|
func EasyMapFromString(data string) Map {
|
||||||
|
return EasyMapFromByte([]byte(data))
|
||||||
|
}
|
||||||
|
|
||||||
|
// EasyMapFromByte 从字节数组转为Map
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 16:12 2023/8/10
|
||||||
|
func EasyMapFromByte(data []byte) Map {
|
||||||
|
var tmpMap map[interface{}]interface{}
|
||||||
|
decoder := json.NewDecoder(bytes.NewReader(data))
|
||||||
|
decoder.UseNumber()
|
||||||
|
_ = decoder.Decode(&tmpMap)
|
||||||
|
return EasyMap(tmpMap)
|
||||||
|
}
|
||||||
|
|
||||||
// Map ...
|
// Map ...
|
||||||
//
|
//
|
||||||
// Author : go_developer@163.com<白茶清欢>
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
69
struct.go
Normal file
69
struct.go
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
// Package wrapper ...
|
||||||
|
//
|
||||||
|
// Description : wrapper ...
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 2023-08-10 16:05
|
||||||
|
package wrapper
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"reflect"
|
||||||
|
)
|
||||||
|
|
||||||
|
// NewStruct 包装的数据类型
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 16:07 2023/8/10
|
||||||
|
func NewStruct(data interface{}) *Struct {
|
||||||
|
s, _ := NewStructWithError(data)
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewStructWithError ...
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 16:17 2023/8/10
|
||||||
|
func NewStructWithError(data interface{}) (*Struct, error) {
|
||||||
|
if data == nil {
|
||||||
|
return nil, errors.New("input data is nil")
|
||||||
|
}
|
||||||
|
reflectType := reflect.TypeOf(data)
|
||||||
|
if reflectType.Kind() == reflect.Ptr {
|
||||||
|
reflectType = reflectType.Elem()
|
||||||
|
if reflectType.Kind() != reflect.Struct {
|
||||||
|
return nil, errors.New("input data type is " + reflectType.Elem().Kind().String())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return &Struct{data: data}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Struct 结构体类型
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 16:05 2023/8/10
|
||||||
|
type Struct struct {
|
||||||
|
data interface{}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ToMap 转为Map
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 16:08 2023/8/10
|
||||||
|
func (s *Struct) ToMap() MapResult {
|
||||||
|
if nil == s.data {
|
||||||
|
return MapResult{
|
||||||
|
Value: EasyMap(map[interface{}]interface{}{}),
|
||||||
|
Err: nil,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return MapResult{
|
||||||
|
Value: EasyMapFromStruct(s.data),
|
||||||
|
Err: nil,
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user