Avatar ·

¿Cuándo y en qué orden se ejecuta la función init() en Go?

¡Hola a todos! Acabo de empezar a aprender Go y me encontré con un punto confuso. En la documentación dice que en los packages se puede declarar la función `init()`, que se ejecuta automáticamente. Pero no logro entender cuándo se ejecuta exactamente y en qué orden, si hay varias de estas funciones. Tengo un pequeño proyecto de tres archivos. En el package `main` definí una función `init()` que imprime "main init". En otro archivo del mismo package declaré otra `init()` que incrementa un contador. En el package importado `config` también hay su propia `init()` que lee configuraciones. Esperaba que se ejecutaran en algún orden lógico, pero al ejecutar el programa la salida no fue obvia. Aquí hay un ejemplo de código: ```go // main.go package main import "fmt" var counter int func init() { fmt.Println("First init in main") counter = 10 } func main() { fmt.Println("Main function, counter =", counter) } ``` ```go // extra.go (también package main) package main