Rumah > Artikel > pembangunan bahagian belakang > Cara menghantar pembolehubah/parameter kepada big.NewInt()
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
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!