Wie implementiert Go Schließungen im Speicher?

Susan Sarandon
Freigeben: 2024-10-30 13:19:02
Original
936 Leute haben es durchsucht

How Does Go Implement Closures in Memory?

Speicherlayout von Go-Abschlüssen

Go-Abschlüsse ermöglichen, wie Abschlüsse in vielen anderen Programmiersprachen, Funktionen den Zugriff auf Variablen, die außerhalb ihres Gültigkeitsbereichs definiert sind. Während das Konzept von Abschlüssen in allen Sprachen ähnlich ist, kann die Art und Weise, wie sie im Speicher dargestellt werden, variieren. In Go sind Abschlüsse einfache Heap-Zuweisungen.

Die Funktion m := M.Adder() erstellt sowohl einen Funktionsabschluss als auch eine Zuweisung für den M-Wert. Der für diesen Abschluss zugewiesene Speicher enthält Zeiger sowohl auf die Funktion als auch auf den M-Wert. Die Funktion wird auf dem Stapel zugewiesen, während der M-Wert auf dem Heap zugewiesen wird. Der insgesamt zugewiesene Speicher beträgt 16 Byte (für den Zeiger auf die Funktion und den M-Wert) plus die Größe des M-Werts (in diesem Fall 8 Byte).

Der zurückgegebene func()-Wert aus dem Abschluss Der Aufruf reserviert keinen zusätzlichen Speicher. Es verweist lediglich auf die vorhandene Abschlusszuordnung, die Zeiger auf die Funktion und den M-Wert enthält.

Daher beträgt der gesamte zugewiesene Speicher beim Aufruf von a := m.Adder() 24 Bytes (16 Bytes für den Abschluss). und 8 Bytes für den M-Wert). Der Funktionswert selbst reserviert keinen zusätzlichen Speicher und verweist lediglich auf den Abschluss.

Das obige ist der detaillierte Inhalt vonWie implementiert Go Schließungen im Speicher?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!