- 将一些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

@@ -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
}