这是因为程序的计算顺序导致的。 截至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