- 将一些reflect相关的函数称到utils_reflect.go里
This commit is contained in:
@@ -7,7 +7,6 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"math"
|
"math"
|
||||||
"net/url"
|
"net/url"
|
||||||
"reflect"
|
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
@@ -22,17 +21,6 @@ var (
|
|||||||
ZeroTimeValue = time.Time{}
|
ZeroTimeValue = time.Time{}
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetConcretValue(value reflect.Value) reflect.Value {
|
|
||||||
for {
|
|
||||||
if value.Kind() == reflect.Interface || value.Kind() == reflect.Ptr {
|
|
||||||
value = value.Elem()
|
|
||||||
} else {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return value
|
|
||||||
}
|
|
||||||
|
|
||||||
func UnmarshalUseNumber(data []byte, result interface{}) error {
|
func UnmarshalUseNumber(data []byte, result interface{}) error {
|
||||||
err := TryUnmarshalUseNumber(data, result)
|
err := TryUnmarshalUseNumber(data, result)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -184,21 +172,6 @@ func Interface2StringList(data interface{}) []string {
|
|||||||
return retVal
|
return retVal
|
||||||
}
|
}
|
||||||
|
|
||||||
func Interface2Slice(value interface{}) (retVal []interface{}) {
|
|
||||||
typeInfo := reflect.TypeOf(value)
|
|
||||||
if typeInfo.Kind() != reflect.Slice {
|
|
||||||
panic("list must be slice type!")
|
|
||||||
}
|
|
||||||
if value != nil {
|
|
||||||
valueInfo := reflect.ValueOf(value)
|
|
||||||
retVal = make([]interface{}, valueInfo.Len())
|
|
||||||
for i := 0; i < valueInfo.Len(); i++ {
|
|
||||||
retVal[i] = valueInfo.Index(i).Interface()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return retVal
|
|
||||||
}
|
|
||||||
|
|
||||||
func Slice2MapSlice(data []interface{}) []map[string]interface{} {
|
func Slice2MapSlice(data []interface{}) []map[string]interface{} {
|
||||||
retVal := make([]map[string]interface{}, len(data))
|
retVal := make([]map[string]interface{}, len(data))
|
||||||
for k, v := range data {
|
for k, v := range data {
|
||||||
|
|||||||
@@ -57,3 +57,29 @@ func IndirectType(objType reflect.Type) reflect.Type {
|
|||||||
}
|
}
|
||||||
return objType
|
return objType
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetConcretValue(value reflect.Value) reflect.Value {
|
||||||
|
for {
|
||||||
|
if value.Kind() == reflect.Interface || value.Kind() == reflect.Ptr {
|
||||||
|
value = value.Elem()
|
||||||
|
} else {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
|
||||||
|
func Interface2Slice(value interface{}) (retVal []interface{}) {
|
||||||
|
typeInfo := reflect.TypeOf(value)
|
||||||
|
if typeInfo.Kind() != reflect.Slice {
|
||||||
|
panic("list must be slice type!")
|
||||||
|
}
|
||||||
|
if value != nil {
|
||||||
|
valueInfo := reflect.ValueOf(value)
|
||||||
|
retVal = make([]interface{}, valueInfo.Len())
|
||||||
|
for i := 0; i < valueInfo.Len(); i++ {
|
||||||
|
retVal[i] = valueInfo.Index(i).Interface()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return retVal
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user