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

Wie kann ich Funktionen als Werte in einer Go-Map speichern?

DDD
DDDOriginal
2024-12-14 02:50:10176Durchsuche

How Can I Store Functions as Values in a Go Map?

Funktionen in einer Go-Map speichern

In Go ist eine Map ein Typ, der Schlüssel-Wert-Paare speichert. Schlüssel und Werte können von beliebigem Typ sein. In Ihrem Fall möchten Sie Funktionen in einer Karte speichern. Ihr Code funktioniert jedoch nicht, da ein Funktionstyp nicht als Schlüssel in einer Karte verwendet werden kann.

Um dies zu umgehen, können Sie einen Schnittstellentyp zur Darstellung einer Funktion verwenden. Ein Schnittstellentyp definiert eine Reihe von Methoden, die ein Typ implementieren muss, um die Schnittstelle zu erfüllen. In diesem Fall können Sie einen Schnittstellentyp erstellen, der eine Funktion darstellt, die eine Zeichenfolge als Parameter akzeptiert.

import "fmt"

// A function type that takes a string as a parameter.
type StringFunc func(string)

// A map that stores functions that take a string as a parameter.
var funcs map[string]StringFunc

// A function that takes a string as a parameter.
func a(p string) {
    fmt.Println("function a parameter:", p)
}

// Main function.
func main() {
    // Create a map that stores functions that take a string as a parameter.
    funcs = make(map[string]StringFunc)

    // Add the 'a' function to the map.
    funcs["a"] = a

    // Call the 'a' function from the map.
    funcs["a"]("hello")
}

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