为了账号安全,请及时绑定邮箱和手机立即绑定

在已部署的 appengine 应用程序中,用户 ID 可以长于 64 位吗?

在已部署的 appengine 应用程序中,用户 ID 可以长于 64 位吗?

Go
饮歌长啸 2021-11-22 20:07:51
我正在 Go 中开发 appengine 应用程序,当我尝试获取 appengineUser的 ID 并使用以下代码将其转换为 64 位 int 时:id, err := strconv.ParseInt(user.ID, 10, 64)我收到此错误:ERROR: error executing inner: strconv.ParseInt: parsing "185804764220139124118": value out of range此错误是否也发生在已部署代码中的 appengine ID 上?
查看完整描述

2 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

类型的ID字段用Usertype 定义string。仅仅因为它包含数字,不能保证它适合int64.

Go AppengineSDK 使用适合 的值int64,但在生产环境中并非如此。它们通常比 的最大值长int64。它们作为strings交给您,因此请这样对待它们:strings。没有什么会强迫您将它们转换为数字。我不知道你是从哪里想到将它们转换为数字的,但不要那样做。他们是strings。

注意:User.ID不要误认为Key.IntID()which 定义为 type int64


查看完整回答
反对 回复 2021-11-22
?
喵喔喔

TA贡献1735条经验 获得超5个赞

很可能是的。阅读应用引擎文档,它写道:

默认策略生成大致均匀分布的未使用 ID 的随机序列。每个 ID 最长可达 16 位十进制数字。

Go 规范来看,int32-2147483648 through 2147483647.对于 16 位小数来说int64是不够的,但已经足够了。


查看完整回答
反对 回复 2021-11-22
  • 2 回答
  • 0 关注
  • 170 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信