Quand et dans quel ordre la fonction init() est-elle exécutée en Go ?
Bonjour à tous ! Je viens de commencer à apprendre Go et je suis tombé sur un point que je ne comprends pas. Dans la documentation, il est dit que dans les packages, on peut déclarer une fonction `init()` qui s'exécute automatiquement. Mais je n'arrive pas à comprendre quand exactement elle est lancée et dans quel ordre, s'il y a plusieurs de ces fonctions.
J'ai un petit projet composé de trois fichiers. Dans le package `main`, j'ai défini une fonction `init()` qui affiche "main init". Dans un autre fichier du même package, j'ai déclaré une autre `init()` qui incrémente un compteur. Dans le package importé `config`, il y a aussi sa propre `init()` qui lit les paramètres. Je m'attendais à ce qu'elles s'exécutent dans un ordre logique, mais au lancement du programme, le résultat n'était pas évident.
Voici un exemple de code :
```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 (aussi package main)
package main
```