如何在Go中递归一个闭包?
假设我有一个闭包
recur := func(){ recur() }
编译说:
undefined:复发
我该如何实现它?为什么会这样?
它的发生是因为评估的顺序是如何运作的.
截至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