Ich habe versucht, eine genaue Erklärung dafür zu finden, was die init()
-Funktion in Go macht. Ich habe gelesen, was Effective Go sagt, war mir aber unsicher, ob ich es vollständig verstanden habe. Der genaue Satz, bei dem ich unsicher bin, lautet wie folgt:
Und schließlich bedeutet schließlich: init wird aufgerufen, nachdem alle Variablendeklarationen im Paket ihre Initialisierer evaluiert haben, und diese werden erst evaluiert, nachdem alle importierten Pakete initialisiert wurden.
Was bedeutet alle Variablendeklarationen im Paket haben ihre Initialisierer evaluiert
? Bedeutet es, dass die `globalen` Variablen in einem Paket und seinen Dateien deklariert werden und init() nicht ausgeführt wird, bis alles evaluiert ist und dann werden alle init-Funktionen ausgeführt und dann main(), wenn ./main_dateiname ausgeführt wird?
Ich habe auch Mark Summerfields Go-Buch gelesen, und dort steht folgendes:
Wenn ein Paket eine oder mehrere init()-Funktionen hat, werden sie automatisch ausgeführt, bevor die main()-Funktion des Hauptpakets aufgerufen wird.
Nach meinem Verständnis ist init()
nur relevant, wenn du main() ausführen möchtest, oder? Jeder, der init()
genauer versteht, kann mich gerne korrigieren