


Wie wirken sich Gos „defer'-Anweisungen auf als Eingabeparameter deklarierte Variablen im Vergleich zu benannten Ergebnisparametern aus?
Nov 25, 2024 pm 08:11 PMDefer-Verhalten für in Golang unterschiedlich deklarierte Variablen
Funktionen mit benannten Ergebnisparametern verhalten sich bei Verwendung der Defer-Anweisung anders als Funktionen mit Eingabeparametern . In diesem Beispiel untersuchen wir diese Unterschiede:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
c(i int):
In diesem Fall ist i ein eingehender Parameter. Der Rückgabewert wird ausgewertet, bevor die verzögerte Funktion ausgeführt wird. Daher hat das Erhöhen von i nach der Rückgabe keine Auswirkung.
c1():
Hier ist i der Ergebnisparameter . Die return i-Anweisung weist dem Rückgabewert den Wert von i zu. Allerdings können verzögerte Funktionen Rückgabevariablen ändern. In diesem Fall erhöht die verzögerte Funktion i, was zu einem Rückgabewert von 1 führt.
c2():
Ähnlich wie c1(), die Return-2-Anweisung weist i 2 zu. In diesem Fall wird die verzögerte Funktion jedoch nach der Return-Anweisung ausgeführt, was zu einem Rückgabewert von 3 führt.
Zusammenfassend ist es bei der Arbeit mit benannten Ergebnisparametern in Go wichtig zu bedenken, dass verzögerte Funktionen Änderungen vornehmen können ihre Werte auch nach der return-Anweisung. Dieses Verhalten wird in der Go-Spezifikation ausdrücklich erwähnt und kann bei Bedarf zur Änderung von Rückgabewerten verwendet werden.
Das obige ist der detaillierte Inhalt vonWie wirken sich Gos „defer'-Anweisungen auf als Eingabeparameter deklarierte Variablen im Vergleich zu benannten Ergebnisparametern aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

GO Language Pack Import: Was ist der Unterschied zwischen Unterstrich und ohne Unterstrich?

Wie schreibe ich Scheinobjekte und Stubs zum Testen in Go?

Wie kann ich kurzfristige Informationsübertragung zwischen Seiten im BeEGO-Framework implementieren?

Wie kann ich benutzerdefinierte Typ -Einschränkungen für Generika in Go definieren?

Wie kann ich Tracing -Tools verwenden, um den Ausführungsfluss meiner GO -Anwendungen zu verstehen?

Wie kann ich Linter und statische Analyse -Tools verwenden, um die Qualität und Wartbarkeit meines GO -Codes zu verbessern?

Wie schreibe ich Dateien in Go Language bequem?

Wie konvertieren Sie die Liste der MySQL -Abfrageergebnisse in eine benutzerdefinierte Struktur -Slice in Go -Sprache?
