Heim >Backend-Entwicklung >Golang >Wie kann ich in Go Funktionen als Argumente übergeben?
Übergabe von Funktionen als Argumente: Ein Metaprogrammierungsansatz in Golang
Wie wir wissen, sind Golang-Funktionen erstklassige Werte, sodass keine Notwendigkeit besteht Metaprogrammierungstricks, die in dynamischen Sprachen üblich sind. Um eine Funktion als Argument an eine andere Funktion zu übergeben, können wir einfach Golangs inhärente Unterstützung für Funktionswerte nutzen. Hier ist ein Beispiel:
package main import "fmt" func someFunction1(a, b int) int { return a + b } func someFunction2(a, b int) int { return a - b } func someOtherFunction(a, b int, f func(int, int) int) int { return f(a, b) } func main() { fmt.Println(someOtherFunction(111, 12, someFunction1)) fmt.Println(someOtherFunction(111, 12, someFunction2)) }
Das Ausführen dieses Programms erzeugt die folgende Ausgabe:
123 99
Betrachten wir nun ein Szenario, in dem die Auswahl der Funktion von einer Laufzeit abhängt. nur bekannter Wert. Um dies zu bewältigen, können wir eine Karte erstellen, die Funktionsnamen mit ihren jeweiligen Funktionszeigern verknüpft:
m := map[string]func(int, int) int{ "someFunction1": someFunction1, "someFunction2": someFunction2, } ... z := someOtherFunction(x, y, m[key])
Auf diese Weise können wir eine Funktion als Argument anhand ihres Namens übergeben und die gewünschte Funktion dynamisch auswählen Laufzeit.
Das obige ist der detaillierte Inhalt vonWie kann ich in Go Funktionen als Argumente übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!