Avatar ·

Wann und in welcher Reihenfolge wird die Funktion init() in Go ausgeführt?

Hallo zusammen! Ich habe gerade angefangen, Go zu lernen, und bin auf einen unklaren Punkt gestoßen. In der Dokumentation steht, dass man in Paketen die Funktion `init()` deklarieren kann, die automatisch ausgeführt wird. Aber ich kann nicht verstehen, wann genau sie gestartet wird und in welcher Reihenfolge, wenn es mehrere solcher Funktionen gibt. Ich habe ein kleines Projekt mit drei Dateien. Im Paket `main` habe ich eine `init()`-Funktion definiert, die "main init" ausgibt. In einer anderen Datei desselben Pakets habe ich eine weitere `init()` deklariert, die einen Zähler erhöht. Im importierten Paket `config` gibt es auch eine eigene `init()`, die Einstellungen liest. Ich erwartete, dass sie in einer logischen Reihenfolge ausgeführt werden, aber beim Start des Programms war die Ausgabe nicht offensichtlich. Hier ist ein Beispielcode: ```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 (auch package main) package main ```