code: func ToRvalueType(confValue interface{}, convertType reflect.Type) (returnValue reflect.Value, err error) {
  	castValue := cast.NewValue(confValue, nil)
  	returnValue = reflect.New(convertType).Elem()
  
  	switch convertType.Kind() {
  	case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
  		returnInt, rErr := castValue.ToInt64()
  		if err != nil {
  			err = rErr
  		}
  		returnValue.SetInt(returnInt)
  
  	case reflect.String:
  		returnString, rErr := castValue.ToString()
  		if err != nil {
  			err = rErr
  		}
  
  		returnValue.SetString(returnString)
  
  	case reflect.Float32, reflect.Float64:
  		returnFloat, rErr := castValue.ToFloat64()
  		if err != nil {
  			err = rErr
  		}
  		returnValue.SetFloat(returnFloat)
  
  	case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
  		returnUInt, rErr := castValue.ToUint64()
  		if err != nil {
  			err = rErr
  		}
  		returnValue.SetUint(returnUInt)
  	case reflect.Bool:
  		returnBool, rErr := castValue.ToBool()
  		if err != nil {
  			err = rErr
  		}
  		returnValue.SetBool(returnBool)
  	default:
  		err = errors.New("canot convert type")
  	}
  
  	return returnValue, err
  }
docs: // ToRvalueType Deserializes the object to a particular type