我希望能够在golang中返回递归匿名函数。我使用了下面的代码片段。这里 foo() 不起作用,因为匿名函数无法引用自身。bar() 按预期工作。如果可能的话,这样做的正确方法是什么?package mainimport ( "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))}
1 回答
守候你守候我
TA贡献1802条经验 获得超10个赞
您可以先声明: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
}
- 1 回答
- 0 关注
- 72 浏览
添加回答
举报
0/150
提交
取消