conv icon indicating copy to clipboard operation
conv copied to clipboard

toUint64不应该支持字符串float转uint64

Open fffailed opened this issue 3 months ago • 3 comments

个人认为toUint64这个底层方法不应该支持字符串float转uint64, 如果需要将字符串float转换为uint64应该使用Float64方法uint64(conv.MustFloat64("11.12")),或者再包装一个高级方法,这里应该仅支持基础的转换,不应该有额外的开销

Image

Originally posted by @fffailed in #4

fffailed avatar Jan 05 '26 10:01 fffailed

conv 的设计初衷是尽可能地将 any 类型的数据转换为指定类型的数据,并不是一个精确的转换,比如 toInt64 支持将 bool 转换为 1 和 0。 toInt64 本身也支持将 float 转换为 int64 的,如果不支持浮点字符串转换为 int64,就会有点割裂。

caixw avatar Jan 05 '26 13:01 caixw

conv 的设计初衷是尽可能地将 any 类型的数据转换为指定类型的数据,并不是一个精确的转换,比如 toInt64 支持将 bool 转换为 1 和 0。 toInt64 本身也支持将 float 转换为 int64 的,如果不支持浮点字符串转换为 int64,就会有点割裂。

这样的话 "nil" "true" "false" 这种字符串都应该支持了。

fffailed avatar Jan 06 '26 03:01 fffailed

conv 的设计初衷是尽可能地将 any 类型的数据转换为指定类型的数据,并不是一个精确的转换,比如 toInt64 支持将 bool 转换为 1 和 0。 toInt64 本身也支持将 float 转换为 int64 的,如果不支持浮点字符串转换为 int64,就会有点割裂。

这样的话 "nil" "true" "false" 这种字符串都应该支持了。

这个库最初是因为我的 orm 和另一个 ini 解析库要用到,就把功能剥离出来放在一起作为一个库使用。

当时的想法是既然作为一个独立的库,那就尽可能地将数据转换为想要的类型。toint64 也的确有支持 truefalseonoff 等常用的 bool 字符串的想法,还想支持 2^1281234_4567 这种常见的数值表示形式。

但是计划赶不上变化,目前这个库我只能是以维护为主,尽量不破坏其原有的兼容性。你如果有想法和时间,可以发 PR 帮忙改进一下。

caixw avatar Jan 06 '26 03:01 caixw