go - Golang 字符串到 uint
问题描述
在我的项目中,ID 被设计为雪花。前端传一个字符串给我,数据库存储是bigint。这意味着在我存储它之前,它需要转换为 uint。请告诉我该怎么办?演示数据:
m := "156343853366906880"
我的代码:
u, _ := strconv.ParseUint(m, 0, 19)
预期的结果是准确的,不会失去准确性
解决方案
的第三个参数strconv.parseUint()
是bitSize
。19 位不足以代表数字156343853366906880
。因此该方法返回错误。(您通过将其分配给 忽略它_
)
m := "156343853366906880"
_, err := strconv.ParseUint(m, 0, 19)
fmt.Println(err)
//strconv.ParseUint: parsing "156343853366906880": value out of range 524287
2^19 - 1 = 524287 是可以用 19 位表示的最大无符号数。
将 64 作为 bitSize 传递:
m := "156343853366906880"
u, err := strconv.ParseUint(m, 0, 64)
if err == nil {
fmt.Print(u)
//156343853366906880
}
如果您的号码将大于uint64
使用big.Int
:
推荐阅读
- python - 如何在不达到递归限制的情况下使用子对象或邻居关系腌制 class() 对象并在加载时保留对象
- javascript - 有没有办法在mongodb中进行多组
- linux - 使用 i2cget 检查 RTC 寄存器会改变 RTC 的时间吗?
- python - 从文本文件中选择随机行而不在 Python 中重复
- reactjs - 传递道具不是子组件(ReactJS)
- ios - 为什么除非包裹在 UIView.Animate 块中,否则我的 UIView.Transition 不起作用?
- asp.net-core - @Localizer 不适用于带有 asp-for 和 value 的特殊情况输入类型提交
- annotations - IMAGEMAGICK - 校样,逆日期顺序(最近在前),标有图像日期
- oracle - Oracle 云实例互联网连接非常慢
- amazon-web-services - 访问存储库时出现 AWS Code Deploy 403 错误