Maison > développement back-end > Golang > Comment passer des variables/paramètres à big.NewInt()

Comment passer des variables/paramètres à big.NewInt()

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2024-02-05 22:18:04
avant
860 Les gens l'ont consulté

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

Contenu de la question

L'extrait de code suivant ne parvient pas à être compilé sur N := big.NewInt(n) avec l'erreur suivante :

<code>
cannot use n (variable of type int) as int64 value in argument to
big.NewInt
</code>
Copier après la connexion
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
}
Copier après la connexion

Si je passe un littéral int64 (c'est-à-dire N := big.NewInt(1)), cela fonctionne. Mais j'ai besoin d'un moyen de convertir une variable int64 ou un argument/argument en big.Int. Qu'ai-je fait de mal? Est-ce que Go ne prend pas du tout en charge cela ? N := big.NewInt(1)),它就可以工作。但我需要一种方法将 int64 变量或参数/参数转换为 big.Int。我究竟做错了什么? Go 根本不支持这个吗?


正确答案


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

Bonne réponse

Cette erreur est due au fait quehttps : //pkg.go.dev/math/big# La fonction NewInt

prend la valeur int64 comme paramètre au lieu du type int. Effectuez la conversion de type requise :

De plus, la logique de calcul peut s'écrire très simplement comme

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
}
Copier après la connexion
🎜🎜https://www.php.cn/link/861f8aa2598860c0023f399e992eb747🎜 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal