我一直在研究涉及包的元编程,并且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
则默认使用。
由于int
Go 中的类型代表您的体系结构的本机大小,因此这将在具有 32 位int
的系统上溢出。
- 1 回答
- 0 关注
- 997 浏览
添加回答
举报
0/150
提交
取消