cloudwego/thriftgo

parser: int const type support is not friendly

Closed this issue · 4 comments

例子:

// 某业务,定义常量的时候会根据位数进行区分,比如下列例子是前4位和后四位分别有不同含义
const i16   SUB_BIZ_TYPE_INSURANCE_CLAIM    = 00040001  
const i16   SUB_BIZ_TYPE_TEST_SCENE_A       = 00049999
const i16   SUB_BIZ_TYPE_TEST_SCENE_B       = 00049998

目前解析报错:

parse demo.thrift err: parseConstValue failed at '00049999': strconv.ParseInt: parsing "00049999": invalid syntax

期望: 支持这种类型
sdk版本: v0.1.3

lsjbd commented

有哪一种编程语言会使用这样的表示法吗?还是原创的?
据我所知,以 0 开头的整型字面量语法只有 8 进制和 16 进制两种,而你的实例显然都不是,对其做支持只会带来混乱。
如果要对根据某些位数分段来做区分,显然用字符串更天然和直接。

但是这块,确实存量业务接入有这种问题,而且内部kite确实也支持,我理解既然新的应该也要兼容下旧的业务吧!而且这样定义number类型确实很多语言也都支持!

lsjbd commented

但是这块,确实存量业务接入有这种问题,而且内部kite确实也支持,我理解既然新的应该也要兼容下旧的业务吧!而且这样定义number类型确实很多语言也都支持!

据我所知,至少 00049999 这样的整型字面量,在 golang 和 python 里就是非法的。

确实是,不好意思,如果不考虑兼容这个的话也是合理的!这个我先关闭了!