Heim > Backend-Entwicklung > Golang > Wie kann ich auf Schlüssel von Go Maps mit unterschiedlichen Werttypen zugreifen?

Wie kann ich auf Schlüssel von Go Maps mit unterschiedlichen Werttypen zugreifen?

Patricia Arquette
Freigeben: 2024-12-20 01:42:09
Original
1002 Leute haben es durchsucht

How Can I Access Keys from Go Maps with Different Value Types?

Zugriff auf Schlüssel von Karten mit unterschiedlichen Werttypen

In Go sind Karten von Natur aus generisch, aber ihr Verhalten ist aufgrund der Abwesenheit nicht kovariant von generischen Typen. Dies bedeutet, dass Sie möglicherweise auf Szenarien stoßen, in denen Sie auf Schlüssel von Karten mit unterschiedlichen Werttypen zugreifen möchten. Der Versuch, eine Schnittstelle{} als Werttyp zu verwenden, mag intuitiv erscheinen, funktioniert aber nicht wie erwartet.

func main() {
    mapOne := map[string]int
    mapTwo := map[string]double
    mapThree := map[string]SomeStruct

    useKeys(mapOne)
}
func useKeys(m map[string]interface{}) {
    //something with keys here
}
Nach dem Login kopieren

Während es verständlich ist, eine elegante Lösung zu wünschen, muss man sich dessen in Go bewusst sein Möglicherweise müssen Sie bestimmte Logik für Karten mit unterschiedlichen Werttypen replizieren.

Wenn Sie jedoch die Flexibilität benötigen, Schlüssel aus einer beliebigen Karte zu erhalten, kann Reflexion hilfreich sein beschäftigt:

func useKeys(m interface{}) {
    v := reflect.ValueOf(m)
    if v.Kind() != reflect.Map {
        fmt.Println("not a map!")
        return
    }

    keys := v.MapKeys()
    fmt.Println(keys)
}
Nach dem Login kopieren

Dieser Ansatz ermöglicht Ihnen die Arbeit mit Karten jeglicher Art und bietet Zugriff auf deren Schlüssel.

Das obige ist der detaillierte Inhalt vonWie kann ich auf Schlüssel von Go Maps mit unterschiedlichen Werttypen zugreifen?. 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