Heim > Backend-Entwicklung > Golang > Wie kann ich das „statische' Schlüsselwort von C für lokale Variablen in Go simulieren?

Wie kann ich das „statische' Schlüsselwort von C für lokale Variablen in Go simulieren?

Linda Hamilton
Freigeben: 2024-12-03 12:18:10
Original
853 Leute haben es durchsucht

How Can I Simulate C's 'static' Keyword for Local Variables in Go?

Erhaltung lokaler Variablen in Go: Eine Alternative zu „statisch“ von C

In Go gibt es im Gegensatz zu C kein direktes Äquivalent zu Schlüsselwort „static“ für lokale Variablen. Es ist jedoch weiterhin möglich, lokale Variablen zu erstellen, die ihre Werte zwischen Funktionsaufrufen beibehalten, indem das Konzept der Abschlüsse genutzt wird.

Closure to the Rescue

Ein Abschluss in Go ist eine Funktion, die die Umgebung der Funktion, in der sie erstellt wurde, erfasst und teilt. Dies umfasst den Zugriff auf Variablen, die außerhalb des Gültigkeitsbereichs des Abschlusses definiert sind. Durch die Nutzung von Abschlüssen können wir ein ähnliches Verhalten wie eine statische lokale Variable in C simulieren.

Beispiel in Go

Betrachten Sie den folgenden Code:

func main() {
   
    x := 0
    func() {
        defer fmt.Println("x:", x)
        x++
    }()
    for i := 0; i < 10; i++ {
        x++
    }
}
Nach dem Login kopieren

Hier definieren wir eine Funktion (anonym), die über die Variable „x“ in der „Haupt“-Funktion schließt. Dadurch wird der aktuelle Wert von „x“ erfasst, wenn die Funktion ausgeführt wird.

Ausgabe:

x: 1
x: 2
x: 3
....
x: 10
Nach dem Login kopieren

Wie Sie sehen können, erhöht sich der Wert von „x“. innerhalb der geschlossenen Funktion und bleibt dabei unabhängig von dem „x“, das in der „Haupt“-Funktion erhöht wird. Dies verhält sich effektiv wie eine statische lokale Variable und behält ihren Wert zwischen Funktionsaufrufen bei.

Hinweis:

Dieser Ansatz funktioniert, weil die Funktion den Wert von „x“ erfasst -Referenz statt Nebenwert. Dadurch wird sichergestellt, dass alle an „x“ innerhalb der Funktion vorgenommenen Änderungen im umschließenden Bereich widergespiegelt werden.

Das obige ist der detaillierte Inhalt vonWie kann ich das „statische' Schlüsselwort von C für lokale Variablen in Go simulieren?. 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