这是我的测试功能。
if -1 != cmp(2<<32, keys[2].Distance(keys[5])) {
t.Errorf("2<<32 should be smaller")
}
导致以下错误
常量8589934592溢出int
是否可以在32位系统上运行?
编辑:这也是比较键的距离函数
// Distance returns the distance metric in this key space
func (s *xorKeySpace) Distance(k1, k2 Key) *big.Int {
// XOR the keys
k3 := XOR(k1.Bytes, k2.Bytes)
// interpret it as an integer
dist := big.NewInt(0).SetBytes(k3)
return dist
}
答案 0 :(得分:1)
确保使用64位int,最好的方法是使用uint64
确保大小
type Key int64 // or uint64
假设键被定义为int,否则只需将所有函数签名从int
更改为int64
。