【问题标题】:operator <= not defined on pointer运算符 <= 未在指针上定义
【发布时间】:2024-01-29 02:25:02
【问题描述】:

在使用 big.Int 时,我似乎无法使用 大于或等于) 运算符。

有没有办法比较两个 big.Ints?

我的代码是这样的:

for i := big.NewInt(2); i <= sqrt; i.Add(i, big.NewInt(1)) {...

'i' 和 'sqrt' 是我想要比较的。

感谢您的帮助

【问题讨论】:

标签: go bigint


【解决方案1】:

使用大的Cmp方法(https://golang.org/pkg/math/big/#Int.Cmp) 如果小于,则 Cmp 返回 -1。如果相等则为 0,如果大于则为 1。

package main

import (
    "fmt"
    "math/big"
)

func main() {
    for i := big.NewInt(2); i.Cmp(big.NewInt(10)) < 1; i.Add(i, big.NewInt(1)) {
        fmt.Println(i)
    }
}

游乐场:https://play.golang.org/p/FpU8xaRrdE

【讨论】:

  • 我将如何将其实现为&lt;=?如,小于或等于?
  • 小于等于。请记住,Cmp 只有在更大时才返回 1。所以当我是 10 时,Cmp 返回 0 并且它仍然打印,但是当我是 11 时它返回 1 并停止。好好看看 playground 的例子,修改直到你理解为止。