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

我正在 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 上?


饮歌长啸
浏览 171回答 2
2回答

交互式爱情

类型的ID字段用Usertype 定义string。仅仅因为它包含数字,不能保证它适合int64.Go AppengineSDK 使用适合 的值int64,但在生产环境中并非如此。它们通常比 的最大值长int64。它们作为strings交给您,因此请这样对待它们:strings。没有什么会强迫您将它们转换为数字。我不知道你是从哪里想到将它们转换为数字的,但不要那样做。他们是strings。注意:User.ID不要误认为Key.IntID()which 定义为 type int64。

喵喔喔

很可能是的。阅读应用引擎文档,它写道:默认策略生成大致均匀分布的未使用 ID 的随机序列。每个 ID 最长可达 16 位十进制数字。从Go 规范来看,int32-2147483648 through 2147483647.对于 16 位小数来说int64是不够的,但已经足够了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go