首页 > 后端开发 > Golang > 正文

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

WBOY
发布: 2024-02-05 22:18:04
转载
802 人浏览过

如何将变量/参数传递给 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 根本不支持这个吗?N := big.NewInt(1)),它就可以工作。但我需要一种方法将 int64 变量或参数/参数转换为 big.Int。我究竟做错了什么? Go 根本不支持这个吗?


正确答案


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

正确答案

该错误是因为 https://pkg.go.dev/math/big# NewInt

函数采用 int64 值作为参数,而不是 int 类型。执行所需的类型转换:

此外,计算逻辑可以非常简单地写为

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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板