首頁 > 後端開發 > Golang > 主體

如何將變數/參數傳遞給 big.NewInt()

WBOY
發布: 2024-02-05 22:18:04
轉載
799 人瀏覽過

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

問題內容

以下程式碼片段無法在N := big.NewInt(n) 上編譯,並出現下列錯誤:

<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
}
登入後複製

如果我傳遞一個 int64 文字(即 N := big.NewInt(1)),它就可以工作。但我需要一個方法將 int64 變數或參數/參數轉換為 big.Int。我究竟做錯了什麼? Go 根本不支援這個嗎?


正確答案


該錯誤是因為https://pkg.go.dev/math/big# NewInt 函數採用 int64 值作為參數,而不是int 類型。執行所需的型別轉換:

N := big.NewInt(int64(n))
登入後複製

此外,計算邏輯可以非常簡單地寫為

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

以上是如何將變數/參數傳遞給 big.NewInt()的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板