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

Go - math.MaxInt64 和类型推断错误

Go - math.MaxInt64 和类型推断错误

Go
30秒到达战场 2021-09-27 14:17:03
我一直在研究涉及包的元编程,并且constant 9223372036854775807 overflows int每次都遇到错误math.MaxInt64并math.MaxUint64出现。我把它分为两种情况:有效的var a int64 = math.MaxInt64b := interface{}(int64(math.MaxInt64))无效a := math.MaxInt64b := interface{}(math.MaxInt64)https://play.golang.org/p/U1QDmFbV29Go 似乎没有进行正确的类型推断。这是错误还是预期行为?如果期望,有谁知道为什么?
查看完整描述

1 回答

?
一只名叫tom的猫

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

math.MaxInt64是一个Untyped Constant。数字常量代表任意精度的值并且不会溢出。当您将此分配给变量时,它需要转换为数字类型,如果未指定,int则默认使用。

由于intGo 中的类型代表您的体系结构的本机大小,因此这将在具有 32 位int的系统上溢出。


查看完整回答
反对 回复 2021-09-27
  • 1 回答
  • 0 关注
  • 997 浏览
慕课专栏
更多

添加回答

举报

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