1234567891011121314151617181920212223242526272829303132333435363738 |
- package xreflect
- import (
- "encoding/json"
- "reflect"
- "strconv"
- "kpt-tmr-group/pkg/xerr"
- )
- var ErrUnkownType = xerr.New("unknown type")
- func SetString(target reflect.Value, val string) error {
- if target.Kind() == reflect.String {
- target.SetString(val)
- return nil
- }
- return json.Unmarshal([]byte(val), target.Addr().Interface())
- }
- func ToString(target reflect.Value) (string, error) {
- switch target.Kind() {
- case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
- return strconv.FormatInt(target.Int(), 10), nil
- case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
- return strconv.FormatUint(target.Uint(), 10), nil
- case reflect.Float32:
- return strconv.FormatFloat(target.Float(), 'f', -1, 32), nil
- case reflect.Float64:
- return strconv.FormatFloat(target.Float(), 'f', -1, 64), nil
- case reflect.Bool:
- return strconv.FormatBool(target.Bool()), nil
- case reflect.String:
- return target.String(), nil
- default:
- return "", ErrUnkownType
- }
- }
|