Avatar ·

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 ```