登录
首页 >  Golang >  Go问答

golang中实现递归的匿名函数

来源:stackoverflow

时间:2024-03-04 10:06:19 231浏览 收藏

一分耕耘,一分收获!既然打开了这篇文章《golang中实现递归的匿名函数》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

问题内容

我希望能够在 golang 中返回一个递归匿名函数。我使用了下面的代码片段。 这里 foo() 不起作用,因为匿名函数无法引用自身。 bar() 按预期工作。

如果可能的话,正确的做法是什么?

package main

import (
    "fmt"
)

func foo() func(int) int {
    return func(x int) int {
        if x == 1 {
            return 1
        }
        return x * func(x-1) // this is where the problem lies
    }
}
func bar() func(int) int {
    return func(x int) int {
        return x * 100 
    }
}

func main() {

    a:= foo()
    b:= bar()
    fmt.Println(a(5))
    fmt.Println(b(5))

}

正确答案


您可以先声明f

func foo() func(int) int {
    var f func(x int) int
    f = func(x int) int {
        if x == 1 {
            return 1
        }
        return x * f(x-1) 
    }
   return f
}

今天关于《golang中实现递归的匿名函数》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>