Quando e em que ordem a função init() é executada em Go?
Olá a todos! Comecei a estudar Go recentemente e me deparei com algo que não entendi. Na documentação diz que em packages podemos declarar a função `init()`, que é executada automaticamente. Mas não consigo entender exatamente quando ela é executada e em que ordem, se houver várias dessas funções.
Tenho um pequeno projeto com três arquivos. No package `main`, defini uma função `init()` que imprime "main init". Em outro arquivo do mesmo package, declarei outra `init()` que incrementa um contador. No package importado `config`, também há uma `init()` que lê configurações. Eu esperava que elas fossem executadas em alguma ordem lógica, mas ao executar o programa, a saída não foi óbvia.
Aqui está um exemplo 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 (também package main)
package main
No answers yet.
Faça login para deixar uma resposta