Add some type conversions

This commit is contained in:
Thomas Pelletier
2021-03-22 20:09:11 -04:00
parent ac2d6e2030
commit e5d63aa8fc
+8 -8
View File
@@ -156,8 +156,7 @@ func setString(t target, v string) error {
} }
f = t.get() f = t.get()
} }
f.Elem().Set(reflect.ValueOf(v)) return setString(valueTarget(f.Elem()), v)
return nil
default: default:
return fmt.Errorf("cannot assign string to a %s", f.Kind()) return fmt.Errorf("cannot assign string to a %s", f.Kind())
} }
@@ -179,8 +178,7 @@ func setBool(t target, v bool) error {
} }
f = t.get() f = t.get()
} }
f.Elem().Set(reflect.ValueOf(v)) return setBool(valueTarget(f.Elem()), v)
return nil
default: default:
return fmt.Errorf("cannot assign bool to a %s", f.String()) return fmt.Errorf("cannot assign bool to a %s", f.String())
} }
@@ -193,6 +191,10 @@ func setInt64(t target, v int64) error {
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
// TODO: overflow checks // TODO: overflow checks
return t.setInt64(v) return t.setInt64(v)
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
// TODO: overflow checks
converted := reflect.ValueOf(v).Convert(f.Type())
return t.set(converted)
case reflect.Interface: case reflect.Interface:
return t.set(reflect.ValueOf(v)) return t.set(reflect.ValueOf(v))
case reflect.Ptr: case reflect.Ptr:
@@ -203,8 +205,7 @@ func setInt64(t target, v int64) error {
} }
f = t.get() f = t.get()
} }
f.Elem().Set(reflect.ValueOf(v)) return setInt64(valueTarget(f.Elem()), v)
return nil
default: default:
return fmt.Errorf("cannot assign int64 to a %s", f.String()) return fmt.Errorf("cannot assign int64 to a %s", f.String())
} }
@@ -227,8 +228,7 @@ func setFloat64(t target, v float64) error {
} }
f = t.get() f = t.get()
} }
f.Elem().Set(reflect.ValueOf(v)) return setFloat64(valueTarget(f.Elem()), v)
return nil
default: default:
return fmt.Errorf("cannot assign float64 to a %s", f.String()) return fmt.Errorf("cannot assign float64 to a %s", f.String())
} }