De mi lectura de la especificación:¿Cuál es la diferencia de alcance de cierre entre declaraciones de variables cortas y largas en Go?
Una breve declaración de variables ... es una forma abreviada de un habitual variables declaración con expresiones de inicializador pero no hay tipos ...
Hubiera pensado que los dos eran idénticos:
var f func()
f = func() {
...
}
y
f := func() {
...
}
Pero parece que no lo son. Yo estaba tratando de envolver una función de auto-recursivo en el interior de una función externa, pero esto funciona:
func myOuter() {
var f func()
f = func() {
f()
}
f()
}
Pero esto no es así, diciendo undefined: f
en la función interna.
func myOuter() {
f := func() {
f()
}
f()
}
¿Cuál es la diferencia? ¿Hay alguna forma de escribir esto con la declaración de forma abreviada o tengo que escribirla a mano larga?
Gracias Kissaki, obviamente pegué la misma cosa dos veces por error. – Joe