¿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 la función `init()`. En la documentación dice que se ejecuta automáticamente, pero no puedo entender: ¿cuándo exactamente? ¿Y qué pasa si tengo varios archivos en un package, cada uno con init()? ¿Y si conecto una librería de terceros que también tiene init()?
Aquí está mi ejemplo. Hay un package `database` con el archivo `db.go`:
```go
package database
import "fmt"
var Connection string
func init() {
fmt.Println("Inicializando BD...")
Connection = "postgres://user:pass@localhost/mydb"
}
```
Y el archivo `main.go`:
```go
package main
import (
"fmt"
"myproject/database"
)
func init() {
fmt.Println("Mi init en main")
}
func main() {
fmt.Println(database.Connection)
}
```
Esperaba que primero se ejecutara init en database, luego en main, y luego main(). ¿Pero es siempre así? ¿Qué pasa si importo un package que importa otro package con init()? ¿El orden está garantizado? ¿Y se puede confiar en init()?
No answers yet.
Inicia sesión para dejar una respuesta