Из моего прочтения спецификации:
A short variable declaration... is a shorthand for a regular variable declaration with initializer expressions but no types...
Я бы подумал, что они идентичны:
var f func()
f = func() {
...
}
и
f := func() {
...
}
Но похоже, что это не так. Я пытался обернуть само-рекурсивную функцию внутрь внешней функции, но это работает:
func myOuter() {
var f func()
f = func() {
f()
}
f()
}
Но это не так, говоря undefined: f
во внутренней функции.
func myOuter() {
f := func() {
f()
}
f()
}
Так в чем же разница? Есть ли способ написать это с помощью краткой декларации формы -или мне нужно написать ее длинной -рукой?