Joe*_*Joe 15 recursion closures go
从我阅读规范:
短变量声明...是使用初始化表达式但没有类型的常规变量声明的简写...
我原以为这两个是相同的:
var f func()
f = func() {
...
}
Run Code Online (Sandbox Code Playgroud)
和
f := func() {
...
}
Run Code Online (Sandbox Code Playgroud)
但似乎他们不是.我试图在外部函数中包装一个自递归函数,但这有效:
func myOuter() {
var f func()
f = func() {
f()
}
f()
}
Run Code Online (Sandbox Code Playgroud)
但这不是,undefined: f在内部功能中说.
func myOuter() {
f := func() {
f()
}
f()
}
Run Code Online (Sandbox Code Playgroud)
那么区别是什么呢?有什么方法可以用简短的声明来写这个,或者我是否必须长篇大论地写出来?
tux*_*21b 14
f := func() { /* ... */ }与...相同var f func() = func() { /* ... */ }(但只允许在包级别使用后一个).在您的特定情况下,这两个变体都不起作用,因为语句将从右到左进行评估.正如您已经建议的那样,解决方案是将语句拆分为两个.一个用于声明变量,另一个用于为其分配递归函数.
| 归档时间: |
|
| 查看次数: |
1648 次 |
| 最近记录: |