我想将它存储在Postgresql中,它只支持BIGINT(带符号的64位).
因为我对数字本身不感兴趣,只是对二进制值感兴趣(因为我用它作为检测唯一性的ID(我的值为〜1000值,64位散列对我来说足够了)我想通过“只”更改类型将其转换为int64.
如何以一种令编译器满意的方式做到这一点?
解决方法 您只需使用 conversion类型:i := uint64(0xffffffffffffffff)i2 := int64(i)fmt.Println(i,i2)
输出:
18446744073709551615 -1
将uint64转换为int64总是成功:它不会仅改变类型的内存表示.如果您尝试将无类型的整数常量值转换为int64,可能会让您感到困惑的是:
i3 := int64(0xffffffffffffffff) // Compile time error!
这是一个编译时错误,因为常量值0xffffffffffffffff(用任意精度表示)不适合int64,因为适合int64的最大值是0x7fffffffffffffff:
constant 18446744073709551615 overflows int64总结
以上是内存溢出为你收集整理的Golang:on-purpose int overflow全部内容,希望文章能够帮你解决Golang:on-purpose int overflow所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)