在 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))


}


慕侠2389804
浏览 73回答 1
1回答

守候你守候我

您可以先声明:ffunc 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}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go