- 将一些reflect相关的函数称到utils_reflect.go里

This commit is contained in:
gazebo
2019-06-05 21:42:04 +08:00
parent d472c9f449
commit d1911a1215
2 changed files with 26 additions and 27 deletions

View File

@@ -7,7 +7,6 @@ import (
"fmt"
"math"
"net/url"
"reflect"
"strconv"
"strings"
"time"
@@ -22,17 +21,6 @@ var (
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 {
err := TryUnmarshalUseNumber(data, result)
if err != nil {
@@ -184,21 +172,6 @@ func Interface2StringList(data interface{}) []string {
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{} {
retVal := make([]map[string]interface{}, len(data))
for k, v := range data {

View File

@@ -57,3 +57,29 @@ func IndirectType(objType reflect.Type) reflect.Type {
}
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
}