Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menghantar pembolehubah/parameter kepada big.NewInt()

Cara menghantar pembolehubah/parameter kepada big.NewInt()

WBOY
WBOYke hadapan
2024-02-05 22:18:04803semak imbas

如何将变量/参数传递给 big.NewInt()

Kandungan soalan

Coretan kod berikut gagal dihimpun pada N := big.NewInt(n) dengan ralat berikut:

<code>
cannot use n (variable of type int) as int64 value in argument to
big.NewInt
</code>
func Factorial(n int) *big.Int {
    var result = new(big.Int)
    i := new(big.Int)
    N := big.NewInt(n)
    for i.Cmp(N) < 0 {
        result = result.Mul(i, result)
        i = i.Add(i, new(big.Int))
    }
    return result
}

Jika saya lulus literal int64 (iaitu N := big.NewInt(1)) ia berfungsi. Tetapi saya memerlukan cara untuk menukar pembolehubah int64 atau hujah/argumen kepada big.Int. Apa yang saya buat salah? Adakah Go tidak menyokong ini sama sekali? N := big.NewInt(1)),它就可以工作。但我需要一种方法将 int64 变量或参数/参数转换为 big.Int。我究竟做错了什么? Go 根本不支持这个吗?


正确答案


该错误是因为 https://pkg.go.dev/math/big# NewInt 函数采用 int64 值作为参数,而不是 int

Jawapan betul

Ralat ini adalah keranahttps: //pkg.go.dev/math/big# Fungsi NewInt

mengambil nilai int64 sebagai parameter dan bukannya jenis int. Lakukan penukaran jenis yang diperlukan:

N := big.NewInt(int64(n))
Selain itu, logik pengiraan boleh ditulis dengan sangat mudah sebagai

func Factorial(n int) *big.Int {
    result, one := big.NewInt(1), big.NewInt(1)
    bigN := big.NewInt(int64(n))
    for bigN.Cmp(&big.Int{}) == 1 {
        result.Mul(result, bigN)
        bigN.Sub(bigN, one)
    }
    return result
}
🎜🎜https://www.php.cn/link/861f8aa2598860c0023f399e992eb747🎜 🎜

Atas ialah kandungan terperinci Cara menghantar pembolehubah/parameter kepada big.NewInt(). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam