Heim >Backend-Entwicklung >Golang >Wie kann ich Funktionszeiger aus Funktionsnamen in Go abrufen?

Wie kann ich Funktionszeiger aus Funktionsnamen in Go abrufen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-03 07:22:10402Durchsuche

How Can I Retrieve Function Pointers from Function Names in Go?

Funktionszeiger aus Funktionsnamen in Go abrufen

Viele Programmiersprachen ermöglichen den Zugriff auf Funktionszeiger aus Zeichenfolgendarstellungen von Funktionsnamen. Diese Funktion ist besonders nützlich für Metaprogrammierungstechniken, wie zum Beispiel die dynamische Auswahl von Funktionen zur Ausführung.

Lösung in Go

Im Gegensatz zu einigen anderen Sprachen unterstützt Go zunächst nativ Funktionszeiger -Klassenwerte, sodass keine zusätzlichen Mechanismen erforderlich sind, um sie aus Funktionsnamen zu erhalten. Stattdessen können Funktionen direkt als Argumente an andere Funktionen übergeben werden.

Betrachten Sie beispielsweise den folgenden Code:

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))
}

In diesem Code akzeptiert someOtherFunction einen Funktionszeiger als Argument und ruft auf die angegebene Funktion mit den bereitgestellten Argumenten.

Verwenden einer Karte für dynamische Funktionen Auswahl

In Fällen, in denen die Auswahl einer Funktion von Laufzeitinformationen abhängt, können Sie eine Karte verwenden, um Funktionsnamen mit entsprechenden Funktionszeigern zu verknüpfen. Zum Beispiel:

m := map[string]func(int, int) int{
    "someFunction1": someFunction1,
    "someFunction2": someFunction2,
}

...

z := someOtherFunction(x, y, m[key])

Dadurch können Sie Funktionen basierend auf einem angegebenen Schlüssel dynamisch abrufen und ausführen.

Das obige ist der detaillierte Inhalt vonWie kann ich Funktionszeiger aus Funktionsnamen in Go abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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