Heim > Artikel > Backend-Entwicklung > Wie geht der Compiler von Go mit verschachtelten Funktionen um?
Wie geht der Compiler beim Schreiben verschachtelter Funktionen in go damit um? Wird es zu einer anderen Funktion und außerhalb des Codes platziert, oder wird es neu erstellt, wenn die übergeordnete Funktion aufgerufen wird?
Zum Beispiel:
func funca() int { a := 0 funcb := func(_a int) int { return _a } return funcb(a) }
Ist diese Funktion wie folgt kompiliert?
func FuncA() int { a := 0 return _funcB(a) } func _funcB(_a int) int { return _a }
Oder wird es genau wie geschrieben kompiliert, was bedeutet, dass jedes Mal neuer Speicher zugewiesen wird, wenn die Definition von funca
时都会为 funcb
aufgerufen wird?
Verschachtelte Funktionen werden einmal kompiliert.
Da FuncB keine Variablen im umgebenden Bereich schließt, weist FuncA keinen Heap-Speicher zu.
Wenn FuncB Variablen im umgebenden Bereich schließt, werden diese Variablen auf dem Heap zugewiesen. Die Funktion selbst wird einmal kompiliert.
Das obige ist der detaillierte Inhalt vonWie geht der Compiler von Go mit verschachtelten Funktionen um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!