Heim > Backend-Entwicklung > Golang > So übergeben Sie Variablen/Parameter an big.NewInt()

So übergeben Sie Variablen/Parameter an big.NewInt()

WBOY
Freigeben: 2024-02-05 22:18:04
nach vorne
835 Leute haben es durchsucht

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

Frageninhalt

Das folgende Code-Snippet kann am N := big.NewInt(n) nicht kompiliert werden, mit dem folgenden Fehler:

<code>
cannot use n (variable of type int) as int64 value in argument to
big.NewInt
</code>
Nach dem Login kopieren
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
}
Nach dem Login kopieren

Wenn ich ein int64-Literal übergebe (d. h. N := big.NewInt(1)), funktioniert es. Aber ich brauche eine Möglichkeit, eine int64-Variable oder ein Argument/Argument in big.Int umzuwandeln. Was habe ich falsch gemacht? Unterstützt Go das überhaupt nicht? N := big.NewInt(1)),它就可以工作。但我需要一种方法将 int64 变量或参数/参数转换为 big.Int。我究竟做错了什么? Go 根本不支持这个吗?


正确答案


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

Richtige Antwort

Dieser Fehler liegt daran, dasshttps: //pkg.go.dev/math/big# NewInt

-Funktion verwendet den int64-Wert als Parameter anstelle des int-Typs. Führen Sie die erforderliche Typkonvertierung durch:

Außerdem kann die Berechnungslogik ganz einfach als

geschrieben werden
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
}
Nach dem Login kopieren
🎜🎜https://www.php.cn/link/861f8aa2598860c0023f399e992eb747🎜 🎜

Das obige ist der detaillierte Inhalt vonSo übergeben Sie Variablen/Parameter an big.NewInt(). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage