Heim > Backend-Entwicklung > Golang > Wie kann ich Funktionsaufrufe als Argumente in Go übergeben?

Wie kann ich Funktionsaufrufe als Argumente in Go übergeben?

Linda Hamilton
Freigeben: 2024-10-28 18:48:02
Original
1022 Leute haben es durchsucht

How Can I Pass Function Calls as Arguments in Go?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

Wir können es wie folgt verwenden:

<code class="go">func main() {
    launch(func() {
        fmt.Println("Hello, playground")
    })

    time.Sleep(time.Second)
}</code>
Nach dem Login kopieren

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!

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