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

时间:2015-12-10 06:00:14

标签: recursion go closures

如何在Go中递归闭包?

假设我有一个像

这样的闭包
recur := func(){
    recur()
}

编译说:

  

undefined:recur

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

1 个答案:

答案 0 :(得分:7)

这是因为how the order of evaluation works而发生的。

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

可能的解决方法:

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

//or

type recurF func(recurF)

recur := func(recur recurF) {
    recur(recur)
}

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