如何在Go中递归一个闭包?

Eze*_*eno 5 recursion closures go

如何在Go中递归一个闭包?

假设我有一个闭包

recur := func(){
    recur()
}
Run Code Online (Sandbox Code Playgroud)

编译说:

undefined:复发

我该如何实现它?为什么会这样?

Eze*_*eno 8

它的发生是因为评估的顺序是如何运作的.

截至2015年12月(go.1.5.1),没有任何语言功能提供它.

可能的解决方法:

var recur func()
recur = func(){
    recur()
}

//or

type recurF func(recurF)

recur := func(recur recurF) {
    recur(recur)
}
Run Code Online (Sandbox Code Playgroud)

更多信息:https://github.com/golang/go/issues/226