github.com/bingoohuang/gg@v0.0.0-20240325092523-45da7dee9335/pkg/yaml/helper.go (about) 1 package yaml 2 3 import ( 4 "reflect" 5 "strconv" 6 7 "golang.org/x/xerrors" 8 ) 9 10 // CastUint64 casts an uint64 to target typ. 11 func CastUint64(v uint64, typ reflect.Type) (reflect.Value, error) { 12 switch typ.Kind() { 13 case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: 14 vv := reflect.New(typ) 15 vv.Elem().SetInt(int64(v)) 16 return vv.Elem(), nil 17 case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: 18 vv := reflect.New(typ) 19 vv.Elem().SetUint(v) 20 return vv.Elem(), nil 21 case reflect.String: 22 vv := reflect.New(typ) 23 vv.Elem().SetString(strconv.FormatUint(v, 10)) 24 return vv.Elem(), nil 25 } 26 return reflect.Value{}, xerrors.New("failed to cast") 27 }