Heim >Backend-Entwicklung >Golang >Wie kann ich Funktionsaufrufe als Argumente in Go übergeben?
Funktionsaufrufe als Argumente in Go übergeben
In Go erfordern Schlüsselwörter wie go und defer Funktionsaufrufe als Parameter. Obwohl es keinen bestimmten Typ für eine solche Verwendung gibt, können wir verschiedene Techniken nutzen, um ein ähnliches Ergebnis zu erzielen.
Verwendung einer Funktionsvariablen/eines Funktionswerts
Wir können definieren eine Variable vom Typ Funktion und weisen Sie ihr eine Funktion zu. Dadurch können wir die Funktion so aufrufen, als ob sie in der Variablen gespeichert wäre.
<code class="go">func myFunc() { fmt.Println("hi") } func main() { var f func() f = myFunc f() // This calls myFunc }</code>
Funktionsaufrufe mit Parametern umschließen
Um Funktionsaufrufe mit Argumenten zu ermöglichen, haben wir kann den Aufruf in eine Funktion einschließen und die umschlossene Funktion übergeben.
<code class="go">func launch(f func()) { fmt.Println("Before launch") go func() { defer fmt.Println("After completion") f() }() }</code>
Wir können es wie folgt verwenden:
<code class="go">func main() { launch(func() { fmt.Println("Hello, playground") }) time.Sleep(time.Second) }</code>
Hilfsfunktionen für die automatische Parameterspeicherung
Für bestimmte Funktionstypen können wir Hilfsfunktionen erstellen, um eine automatische Parameterspeicherung zu ermöglichen. Diese Hilfsfunktionen haben die gleiche Signatur wie die Originalfunktion und geben eine parameterlose Funktion zurück.
Verwenden von Reflection für dynamische Funktionen
Mithilfe von Reflection können wir Funktionen dynamisch aufrufen, ohne dass dies erforderlich ist manuelle Kopien. Allerdings ist sie langsamer und weniger typsicher als andere Methoden.
Methodenwerte
Methodenwerte, die eine Kopie des Empfängerobjekts speichern, sind bei automatischer Methode eine Ausnahme Parameterspeicherung ist möglich. Methodenwerte können verwendet werden, ohne die Methode direkt aufzurufen.
Während Go keinen spezifischen Typ für Funktionsaufrufe hat, bieten diese Techniken verschiedene Möglichkeiten, Funktionsaufrufe als Argumente zu übergeben, einschließlich mit Argumenten oder automatischer Parameterspeicherung.
Das obige ist der detaillierte Inhalt vonWie kann ich Funktionsaufrufe als Argumente in Go übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!