Go 大数相减

Go 大数相减,go,biginteger,Go,Biginteger,我没想到我会写这篇文章,但我找不到至少一个减法大数的例子 所以我有两个数字,我想减去它们,图书馆说,只有一个内存限制,然而,当我试图减去两个256位的数字时,我得到一个错误 告诉我怎么处理它以及如何解决它? 我开始学习去,一切似乎都很酷,然而我不断地遇到类似的问题。怎么了 package main import ( "fmt" "math/big" ) func main() { a := big.NewInt(1137920892373161954235709850

我没想到我会写这篇文章,但我找不到至少一个减法大数的例子

所以我有两个数字,我想减去它们,图书馆说,只有一个内存限制,然而,当我试图减去两个256位的数字时,我得到一个错误

告诉我怎么处理它以及如何解决它? 我开始学习去,一切似乎都很酷,然而我不断地遇到类似的问题。怎么了

package main

import (
    "fmt"
    "math/big"
)

func main() {
    a := big.NewInt(113792089237316195423570985008687907853269984665640564039457584007908834671645)
    b := big.NewInt(20277110887056303803699431755396003735040374760118964734768299847012543114150)
    c := big.NewInt(0).Sub(a, b)
    fmt.Println("c =", c)
}
输出:

*prog.go:9:18: constant 113792089237316195423570985008687907853269984665640564039457584007908834671645 overflows int64
prog.go:10:18: constant 20277110887056303803699431755396003735040374760118964734768299847012543114150 overflows int64*
我使用的是go版本go1.12.4Linux/amd64

操场上的此代码: mde

package main

import (
    "fmt"
    "math/big"
)

func main() {
    i := new(big.Int)
    i.SetString("113792089237316195423570985008687907853269984665640564039457584007908834671645", 10)
    k := new(big.Int)
    k.SetString("20277110887056303803699431755396003735040374760118964734768299847012543114150", 10) 
    c := big.NewInt(0).Sub(i, k)
    fmt.Println("c =", c)
}

看起来您需要在代码中使用
big.Int.SetString
。这里有一个游乐场链接,在那里工作:

对于不想单击链接的用户:

package main

import (
    "fmt"
    "math/big"
)

func main() {
    a, _ := new(big.Int).SetString("113792089237316195423570985008687907853269984665640564039457584007908834671645", 10)
    b, _ := new(big.Int).SetString("20277110887056303803699431755396003735040374760118964734768299847012543114150", 10)
    c := big.NewInt(0).Sub(a, b)
    fmt.Println("c =", c)
}