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"
"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)
}

View File

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

View File

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

View File

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

View File

@ -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
View File

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