Heim > Backend-Entwicklung > Golang > Wie kann ich Funktionen als Werte in einer Go-Map zuweisen und aufrufen?

Wie kann ich Funktionen als Werte in einer Go-Map zuweisen und aufrufen?

Susan Sarandon
Freigeben: 2024-12-09 18:34:15
Original
794 Leute haben es durchsucht

How Can I Assign and Call Functions as Values in a Go Map?

Zuweisen von Funktionen zu Tasten in einer Go-Map

In Go können Sie benutzerdefinierte Funktionen definieren und diese als Werte Tasten in einer Map zuweisen. Dies ermöglicht die dynamische Ausführung von Funktionen basierend auf einem bestimmten Schlüssel.

Um dies zu erreichen, können Sie eine Karte vom Typ „map[string]func(...)“ erstellen, bei der der Schlüssel ein String und der Wert ist eine Funktion. Der bereitgestellte Code versucht jedoch, eine Syntax zu verwenden, die in Go nicht unterstützt wird.

Um dieses Problem zu beheben, verwenden Sie den folgenden Code:

func a(param string) {
    fmt.Println("Function a called with param:", param)
}

func main() {
    m := map[string]func(string) {
        "a_func": a,
    }

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

In diesem Beispiel:

  • Die Map[String]func(String) deklariert eine Map mit String-Schlüsseln und Funktionen, die ein einzelnes String-Argument annehmen.
  • Die m-Variable Initialisiert eine Map mit einem Schlüssel „a_func“ und einem Wert, der eine Referenz auf die a-Funktion ist.
  • Die Bereichsschleife iteriert über die Map, ruft die mit dem Schlüssel „a_func“ verknüpfte Funktion auf und übergibt „test“ als Argument.

Beachten Sie, dass der Typ interface{} im bereitgestellten Codebeispiel nicht erforderlich ist und zu func(...) vereinfacht werden kann.

Das obige ist der detaillierte Inhalt vonWie kann ich Funktionen als Werte in einer Go-Map zuweisen 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