Heim >Backend-Entwicklung >Golang >Wann genau wird die Funktion „init()' von Go ausgeführt?

Wann genau wird die Funktion „init()' von Go ausgeführt?

Susan Sarandon
Susan SarandonOriginal
2024-12-20 22:41:16292Durchsuche

When Exactly Does Go's `init()` Function Run?

Wann wird die Funktion init() ausgeführt?

Die Funktion init() ist eine spezielle Funktion in Go, die vor der Hauptfunktion aufgerufen wird () Funktion des Pakets. Es wird häufig zum Initialisieren von Variablen und anderen Setup-Aufgaben verwendet. Aber was genau bedeutet der folgende Satz von Effective Go:

„Und schließlich bedeutet endlich: init wird aufgerufen, nachdem alle Variablendeklarationen im Paket ihre Initialisierer ausgewertet haben, und diese werden erst ausgewertet, nachdem alle importierten Pakete ausgewertet wurden wurden initialisiert.“

Dies bedeutet, dass die Funktion init() ausgeführt wird, nachdem alle globalen Variablen im aktuellen Paket sowie alle importierten Pakete mit ihren Standardwerten initialisiert wurden. Es ist wichtig zu beachten, dass die Reihenfolge der Initialisierung auf der lexikalischen Reihenfolge der Paketdateien basiert und nicht auf der Reihenfolge, in der die Importe deklariert werden.

Als Beispiel:

var GlobalVar1 = 10

func init() {
    GlobalVar1 = 20
}

func main() {
    // GlobalVar1 is 20
}

In diesem Beispiel wird die Funktion init() aufgerufen, nachdem GlobalVar1 auf 10 initialisiert wurde, und überschreibt den Wert von GlobalVar1 auf 20, bevor die Funktion main() aufgerufen wird aufgerufen.

Es ist erwähnenswert, dass die Funktion init() immer aufgerufen wird, unabhängig davon, ob das Paket eine Funktion main() hat oder nicht. Das heißt, wenn Sie ein Paket importieren, das über eine init()-Funktion verfügt, wird diese vor der init()-Funktion Ihres eigenen Pakets ausgeführt.

Zusätzlich können mehrere init()-Funktionen innerhalb einer einzigen definiert werden Paket, und sie werden in der Reihenfolge ausgeführt, in der sie in der Quelldatei erscheinen. Dadurch können Sie mehrere Initialisierungsaufgaben in einer bestimmten Reihenfolge ausführen.

Das obige ist der detaillierte Inhalt vonWann genau wird die Funktion „init()' von Go ausgeführt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn