From d1911a121513505e4bc4d5f3960b9efdc8d0bff3 Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 5 Jun 2019 21:42:04 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E5=B0=86=E4=B8=80=E4=BA=9Breflect=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E7=9A=84=E5=87=BD=E6=95=B0=E7=A7=B0=E5=88=B0utils=5Fr?= =?UTF-8?q?eflect.go=E9=87=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/typeconv.go | 27 --------------------------- utils/utils_reflect.go | 26 ++++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 27 deletions(-) diff --git a/utils/typeconv.go b/utils/typeconv.go index 818fdcc0..9aacf1ab 100644 --- a/utils/typeconv.go +++ b/utils/typeconv.go @@ -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 { diff --git a/utils/utils_reflect.go b/utils/utils_reflect.go index 56119646..16aea491 100644 --- a/utils/utils_reflect.go +++ b/utils/utils_reflect.go @@ -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 +}