根据我对规范的阅读:
短变量声明...是具有初始化表达式但没有类型的常规变量声明的简写...
我原以为两者是相同的:
var f func()
f = func() {
...
}
和
f := func() {
...
}
但似乎他们不是。我试图在外部函数中包装一个自递归函数,但这有效:
func myOuter() {
var f func()
f = func() {
f()
}
f()
}
但这不是,undefined: f
在内部函数中说。
func myOuter() {
f := func() {
f()
}
f()
}
那么区别是什么呢?有没有办法用简短的声明来写这个,或者我必须把它写出来?