This commit is contained in:
Byung Jun Park 2019-01-07 23:35:34 +09:00
parent d6dfb1fdf7
commit b4a189f69c
6 changed files with 28 additions and 13 deletions

View File

@ -5,7 +5,7 @@ import (
"fmt" "fmt"
"reflect" "reflect"
cr "github.com/corpix/reflect" our "git.loafle.net/overflow/util-go/reflect"
) )
// SetValueWithJSONStringArray set the value of json string array // SetValueWithJSONStringArray set the value of json string array
@ -41,7 +41,7 @@ func SetValueWithJSONStringArray(values []string, targets []interface{}) error {
case reflect.Ptr: case reflect.Ptr:
return fmt.Errorf("Type of target[%d] cannot be double ptr, value=%s", indexI, value) return fmt.Errorf("Type of target[%d] cannot be double ptr, value=%s", indexI, value)
default: default:
cv, err := cr.ConvertToType(value, reflect.TypeOf(target).Elem()) cv, err := our.ConvertToType(value, reflect.TypeOf(target).Elem())
if nil != err { if nil != err {
return fmt.Errorf("Type conversion of value[%s] has been failed to %s[%d]", value, reflect.TypeOf(target).Elem().Kind(), indexI) return fmt.Errorf("Type conversion of value[%s] has been failed to %s[%d]", value, reflect.TypeOf(target).Elem().Kind(), indexI)
} }

View File

@ -5,7 +5,7 @@ import (
"strconv" "strconv"
) )
func ConvertToType(v interface{}, t reflect.Type) (interface{}, error) { func ConvertToType(v interface{}, t Type) (interface{}, error) {
var ( var (
tt = reflect.TypeOf(v) tt = reflect.TypeOf(v)
vv = reflect.ValueOf(v) vv = reflect.ValueOf(v)
@ -47,8 +47,11 @@ func ConvertToType(v interface{}, t reflect.Type) (interface{}, error) {
switch t.Kind() { switch t.Kind() {
case Map: case Map:
var ( var (
res = reflect.MakeMapWithSize(t, len(vv.MapKeys())) res = reflect.MakeMapWithSize(
ck interface{} t,
vv.Len(),
)
ck interface{}
) )
for _, k := range vv.MapKeys() { for _, k := range vv.MapKeys() {
ck, err = ConvertToType( ck, err = ConvertToType(

View File

@ -2,14 +2,13 @@ package reflect
import ( import (
"fmt" "fmt"
"reflect"
"strings" "strings"
) )
type ErrCanNotConvertType struct { type ErrCanNotConvertType struct {
value interface{} value interface{}
from reflect.Type from Type
to reflect.Type to Type
reason []string 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{ return ErrCanNotConvertType{
value: value, value: value,
from: from, from: from,

View File

@ -12,14 +12,14 @@ func Indirect(v interface{}) interface{} {
return IndirectValue(reflect.ValueOf(v)).Interface() return IndirectValue(reflect.ValueOf(v)).Interface()
} }
func IndirectValue(reflectValue reflect.Value) reflect.Value { func IndirectValue(reflectValue Value) Value {
if reflectValue.Kind() == reflect.Ptr { if reflectValue.Kind() == reflect.Ptr {
return reflectValue.Elem() return reflectValue.Elem()
} }
return reflectValue return reflectValue
} }
func IndirectType(reflectType reflect.Type) reflect.Type { func IndirectType(reflectType Type) Type {
if reflectType == TypeInvalid { if reflectType == TypeInvalid {
return TypeInvalid return TypeInvalid
} }

View File

@ -8,8 +8,10 @@ var (
TypeOf = reflect.TypeOf TypeOf = reflect.TypeOf
) )
type Type = reflect.Type
var ( var (
Types = []reflect.Type{ Types = []Type{
TypeBool, TypeBool,
TypeInt, TypeInt,
TypeInt8, TypeInt8,
@ -29,7 +31,7 @@ var (
TypeString, TypeString,
} }
TypeInvalid = reflect.Type(nil) TypeInvalid = Type(nil)
TypeBool = reflect.TypeOf(false) TypeBool = reflect.TypeOf(false)
TypeInt = reflect.TypeOf(int(0)) TypeInt = reflect.TypeOf(int(0))
TypeInt8 = reflect.TypeOf(int8(0)) TypeInt8 = reflect.TypeOf(int8(0))

11
reflect/value.go Normal file
View File

@ -0,0 +1,11 @@
package reflect
import (
"reflect"
)
var (
ValueOf = reflect.ValueOf
)
type Value = reflect.Value