Können Funktionen als Parameter in Go übergeben werden?
Java ermöglicht die Übergabe von Funktionen als Parameter durch die Verwendung anonymer innerer Klassen. Bietet Go einen ähnlichen Mechanismus, um diese Funktionalität zu ermöglichen?
Antwort:
Absolut! Go unterstützt die Übergabe von Funktionen als Parameter durch anonyme Funktionen und Abschlüsse. Hier ein paar Beispiele:
Beispiel 1:
package main import "fmt" type convert func(int) string func value(x int) string { return fmt.Sprintf("%v", x) } func quote123(fn convert) string { return fmt.Sprintf("%q", fn(123)) } func main() { result := quote123(value) fmt.Println(result) // Output: "123" }
In diesem Beispiel ist der Konvertierungsfunktionstyp so definiert, dass er eine Ganzzahl annimmt und eine Zeichenfolge zurückgibt. Die Wertfunktion implementiert die Konvertierung, indem sie die Zeichenfolgendarstellung der eingegebenen Ganzzahl zurückgibt. Die Funktion quote123 akzeptiert eine Konvertierungsfunktion als Argument und gibt eine in Anführungszeichen gesetzte Zeichenfolgendarstellung des Ergebnisses des Funktionsaufrufs mit dem Wert 123 zurück.
Beispiel 2:
package main import "fmt" func main() { result := quote123(func(x int) string { return fmt.Sprintf("%b", x) }) fmt.Println(result) // Output: "1111011" }
Hier wird eine anonyme Funktion als Argument an die Funktion quote123 übergeben. Die anonyme Funktion wandelt die eingegebene Ganzzahl in ihre binäre Zeichenfolgendarstellung um.
Beispiel 3:
package main import "fmt" func main() { foo := func(x int) string { return "foo" } result := quote123(foo) fmt.Println(result) // Output: "foo" }
In diesem Fall wird eine benannte Funktion, foo, übergeben als ein Argument zum Zitieren123. Die foo-Funktion gibt einfach die Zeichenfolge „foo“ für jede Eingabe zurück.
Diese Beispiele demonstrieren die Flexibilität und Leistungsfähigkeit der Übergabe von Funktionen als Parameter in Go, sodass Sie generischen und wiederverwendbaren Code erstellen können.
Das obige ist der detaillierte Inhalt vonKönnen Go-Funktionen als Parameter übergeben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!