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
Susan SarandonOriginal
2024-12-09 18:34:15834Durchsuche

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

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!

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