Heim > Backend-Entwicklung > Golang > Wie rufe ich Go-Funktionen mithilfe von Zeichenfolgennamen dynamisch auf?

Wie rufe ich Go-Funktionen mithilfe von Zeichenfolgennamen dynamisch auf?

Barbara Streisand
Freigeben: 2024-11-28 20:41:14
Original
776 Leute haben es durchsucht

How to Dynamically Invoke Go Functions Using String Names?

Funktionen dynamisch mithilfe von String-Namen in Go aufrufen

Funktionen nehmen in Go eine erstklassige Stellung ein, sodass keine umständlichen Techniken eingesetzt werden müssen in dynamischen Sprachen. Dadurch können Funktionen als Parameter an andere Funktionen übergeben werden, wodurch Metaprogrammierungsfunktionen effektiv aktiviert werden.

Angenommen, Sie möchten eine Funktion als Argument an eine andere Funktion übergeben. Hier ist der Code, den Sie verwenden können, um dies zu erreichen:

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

Das Ausführen dieses Codes erzeugt die folgende Ausgabe:

123
99
Nach dem Login kopieren

Außerdem, wenn die Funktionsauswahl durch eine Nur-Laufzeit-Funktion beeinflusst wird Wenn der Wert bekannt ist, kann eine Karte verwendet werden:

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

...

z := someOtherFunction(x, y, m[key])
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie rufe ich Go-Funktionen mithilfe von Zeichenfolgennamen dynamisch auf?. 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