Heim > Backend-Entwicklung > Golang > Wie kann ich Funktionen mithilfe von Maps in Go dynamisch speichern und aufrufen?

Wie kann ich Funktionen mithilfe von Maps in Go dynamisch speichern und aufrufen?

Patricia Arquette
Freigeben: 2024-12-12 21:43:09
Original
283 Leute haben es durchsucht

How Can I Store and Invoke Functions Dynamically Using Maps in Go?

Funktionen in einer Karte in Go speichern

In Go sind Karten vielseitige Datenstrukturen, die Schlüssel-Wert-Paare speichern können. Manchmal ist es nützlich, Funktionen in einer Karte zu speichern, um einen dynamischen Aufruf basierend auf einer Taste zu ermöglichen.

Problem:

Angenommen, Sie haben mehrere Funktionen und möchten diese erstellen eine Karte, bei der der Schlüssel der Funktionsname und der Wert die Funktion selbst ist. Wenn Sie dies jedoch wie unten gezeigt versuchen, tritt ein Fehler auf:

func a(param string) {}

m := map[string]func{} 
'a_func': a,
}

for key, value := range m {
    if key == 'a_func' {
        value(param) 
    }
}
Nach dem Login kopieren

Lösung:

Das Problem entsteht durch die Syntax zum Definieren einer typspezifischen Karte ist falsch. Um dieses Problem zu beheben, können Sie stattdessen die Syntax „map[string]interface{}“ verwenden, da für die Werte keine Typsicherheit erzwungen wird. Das folgende modifizierte Beispiel veranschaulicht, wie Funktionen aus der Karte gespeichert und aufgerufen werden:

package main

import "fmt"

func f(p string) {
    fmt.Println("function f parameter:", p)
}

func g(p string, q int) {
    fmt.Println("function g parameters:", p, q)
}

func main() {
    m := map[string]interface{}{
        "f": f,
        "g": g,
    }
    for k, v := range m {
        switch k {
        case "f":
            v.(func(string))("astring")
        case "g":
            v.(func(string, int))("astring", 42)
        }
    }
}
Nach dem Login kopieren

In diesem Beispiel speichert die Karte m zwei Funktionswerte als Schnittstelle{}. Beim Aufrufen der Funktionen basierend auf dem Schlüssel wird eine Typzusicherung durchgeführt, um den Schnittstellenwert in den richtigen Funktionstyp umzuwandeln.

Das obige ist der detaillierte Inhalt vonWie kann ich Funktionen mithilfe von Maps in Go dynamisch speichern und aufrufen?. 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