ing
This commit is contained in:
parent
d6dfb1fdf7
commit
b4a189f69c
|
@ -5,7 +5,7 @@ import (
|
|||
"fmt"
|
||||
"reflect"
|
||||
|
||||
cr "github.com/corpix/reflect"
|
||||
our "git.loafle.net/overflow/util-go/reflect"
|
||||
)
|
||||
|
||||
// SetValueWithJSONStringArray set the value of json string array
|
||||
|
@ -41,7 +41,7 @@ func SetValueWithJSONStringArray(values []string, targets []interface{}) error {
|
|||
case reflect.Ptr:
|
||||
return fmt.Errorf("Type of target[%d] cannot be double ptr, value=%s", indexI, value)
|
||||
default:
|
||||
cv, err := cr.ConvertToType(value, reflect.TypeOf(target).Elem())
|
||||
cv, err := our.ConvertToType(value, reflect.TypeOf(target).Elem())
|
||||
if nil != err {
|
||||
return fmt.Errorf("Type conversion of value[%s] has been failed to %s[%d]", value, reflect.TypeOf(target).Elem().Kind(), indexI)
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@ import (
|
|||
"strconv"
|
||||
)
|
||||
|
||||
func ConvertToType(v interface{}, t reflect.Type) (interface{}, error) {
|
||||
func ConvertToType(v interface{}, t Type) (interface{}, error) {
|
||||
var (
|
||||
tt = reflect.TypeOf(v)
|
||||
vv = reflect.ValueOf(v)
|
||||
|
@ -47,8 +47,11 @@ func ConvertToType(v interface{}, t reflect.Type) (interface{}, error) {
|
|||
switch t.Kind() {
|
||||
case Map:
|
||||
var (
|
||||
res = reflect.MakeMapWithSize(t, len(vv.MapKeys()))
|
||||
ck interface{}
|
||||
res = reflect.MakeMapWithSize(
|
||||
t,
|
||||
vv.Len(),
|
||||
)
|
||||
ck interface{}
|
||||
)
|
||||
for _, k := range vv.MapKeys() {
|
||||
ck, err = ConvertToType(
|
||||
|
|
|
@ -2,14 +2,13 @@ package reflect
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"reflect"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type ErrCanNotConvertType struct {
|
||||
value interface{}
|
||||
from reflect.Type
|
||||
to reflect.Type
|
||||
from Type
|
||||
to Type
|
||||
reason []string
|
||||
}
|
||||
|
||||
|
@ -31,7 +30,7 @@ func (e ErrCanNotConvertType) Error() string {
|
|||
)
|
||||
}
|
||||
|
||||
func NewErrCanNotConvertType(value interface{}, from reflect.Type, to reflect.Type, reason ...string) ErrCanNotConvertType {
|
||||
func NewErrCanNotConvertType(value interface{}, from Type, to Type, reason ...string) ErrCanNotConvertType {
|
||||
return ErrCanNotConvertType{
|
||||
value: value,
|
||||
from: from,
|
||||
|
|
|
@ -12,14 +12,14 @@ func Indirect(v interface{}) interface{} {
|
|||
return IndirectValue(reflect.ValueOf(v)).Interface()
|
||||
}
|
||||
|
||||
func IndirectValue(reflectValue reflect.Value) reflect.Value {
|
||||
func IndirectValue(reflectValue Value) Value {
|
||||
if reflectValue.Kind() == reflect.Ptr {
|
||||
return reflectValue.Elem()
|
||||
}
|
||||
return reflectValue
|
||||
}
|
||||
|
||||
func IndirectType(reflectType reflect.Type) reflect.Type {
|
||||
func IndirectType(reflectType Type) Type {
|
||||
if reflectType == TypeInvalid {
|
||||
return TypeInvalid
|
||||
}
|
||||
|
|
|
@ -8,8 +8,10 @@ var (
|
|||
TypeOf = reflect.TypeOf
|
||||
)
|
||||
|
||||
type Type = reflect.Type
|
||||
|
||||
var (
|
||||
Types = []reflect.Type{
|
||||
Types = []Type{
|
||||
TypeBool,
|
||||
TypeInt,
|
||||
TypeInt8,
|
||||
|
@ -29,7 +31,7 @@ var (
|
|||
TypeString,
|
||||
}
|
||||
|
||||
TypeInvalid = reflect.Type(nil)
|
||||
TypeInvalid = Type(nil)
|
||||
TypeBool = reflect.TypeOf(false)
|
||||
TypeInt = reflect.TypeOf(int(0))
|
||||
TypeInt8 = reflect.TypeOf(int8(0))
|
||||
|
|
11
reflect/value.go
Normal file
11
reflect/value.go
Normal file
|
@ -0,0 +1,11 @@
|
|||
package reflect
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
)
|
||||
|
||||
var (
|
||||
ValueOf = reflect.ValueOf
|
||||
)
|
||||
|
||||
type Value = reflect.Value
|
Loading…
Reference in New Issue
Block a user