Zeiger auf Funktion von String in Go
Metaprogrammierung oder die Fähigkeit, Code selbst zur Laufzeit zu manipulieren, ist eine leistungsstarke Technik in der Programmierung. Ein Aspekt, der in Go auftreten kann, ist die Notwendigkeit, auf einen Zeiger auf eine Funktion basierend auf ihrem Namen zuzugreifen, der als String bereitgestellt wird.
Lösung
Im Gegensatz dazu In dynamischen Sprachen gelten Go-Funktionen als erstklassige Werte. Dies bedeutet, dass Funktionen als Argumente an andere Funktionen übergeben werden können, wodurch komplexe Metaprogrammierungstechniken überflüssig werden.
Um dies zu demonstrieren, betrachten Sie den folgenden Codeausschnitt:
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)) }
Ausführung
Wenn dieser Code ausgeführt wird, wird Folgendes erzeugt Ausgabe:
123 99
Dies zeigt, wie Funktionen basierend auf ihren Namen als Argumente an someOtherFunction übergeben werden können.
Benutzerdefinierte Funktionsauswahl
If Die Auswahl der Funktion hängt von einem Wert ab, der nur zur Laufzeit bekannt ist. Sie können eine Zuordnung verwenden, um Funktionsnamen mit der entsprechenden Funktion zu verknüpfen Hinweise:
m := map[string]func(int, int) int{ "someFunction1": someFunction1, "someFunction2": someFunction2, } ... z := someOtherFunction(x, y, m[key])
Das obige ist der detaillierte Inhalt vonWie kann ich zur Laufzeit eine Go-Funktion mithilfe ihres Namens (String) aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!