Heim > Backend-Entwicklung > Golang > Warum sollte „( )' nach Abschlusskörpern in den „defer'-Anweisungen von Go verwendet werden?

Warum sollte „( )' nach Abschlusskörpern in den „defer'-Anweisungen von Go verwendet werden?

Barbara Streisand
Freigeben: 2024-12-02 18:55:11
Original
691 Leute haben es durchsucht

Why Use

Die Begründung hinter „( )“ in Abschlusskörpern in Go

In Go das Hinzufügen von „( )“ nach einem Abschlusskörper ist nicht spezifisch für Abschlüsse, sondern gilt für jeden Funktionsaufruf innerhalb einer Defer-Anweisung. Die Sprachspezifikationen schreiben vor, dass der Ausdruck in einer Defer-Anweisung immer ein Funktionsaufruf sein muss.

Betrachten Sie das Beispiel:

defer f()
Nach dem Login kopieren

Dieser Ausdruck versucht, die Ausführung der Funktion f selbst zu verzögern. was keinen Sinn ergibt. Stattdessen lautet die korrekte Syntax:

defer f()()
Nach dem Login kopieren

Dadurch wird ein Abschluss erstellt, der den aktuellen Kontext erfasst und die Funktion f ausführt, wenn die Defer-Anweisung aktiviert wird. Die äußeren Klammern führen den Abschluss sofort aus und stellen so sicher, dass der Funktionsaufruf nach der Ausführung der Defer-Anweisung erfolgt.

Diese Syntax steht im Einklang mit der allgemeinen Verwendung von Funktionsaufrufen in Go, die für ihre Ausführung immer Klammern erfordern. Um beispielsweise den Wert von i zum Zeitpunkt der Definition des Abschlusses auszugeben, verwenden Sie die folgende Syntax:

defer func(n int) { fmt.Println(n) }(i)
Nach dem Login kopieren

Umgekehrt verwenden Sie zum Ausdrucken des Werts von i zum Zeitpunkt der Ausführung des Abschlusses:

defer func() { fmt.Println(i) }()
Nach dem Login kopieren

Das Verständnis dieses Prinzips ermöglicht ein klares Verständnis des Verhaltens von Defer-Anweisungen in Go und der korrekten Verwendung von „( )“ innerhalb von Abschlusskörpern und darüber hinaus.

Das obige ist der detaillierte Inhalt vonWarum sollte „( )' nach Abschlusskörpern in den „defer'-Anweisungen von Go verwendet werden?. 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