Heim >Backend-Entwicklung >Golang >Wie iteriere ich über eine von einer Schnittstelle reflektierte Karte{}?
F: Schnittstelle{} in Karte konvertieren und darüber iterieren
In einem Versuch, eine generische Funktion zu erstellen, die verschiedene Datenstrukturen akzeptieren kann, einschließlich Strukturen, Struktursegmente und Karten mit Zeichenfolgenschlüsseln und Strukturwerten, Beim Versuch, eine Karte zu durchlaufen, tritt ein Fehler auf. Wenn man über die Schnittstelle nachdenkt, erkennt man, dass es sich tatsächlich um eine Karte handelt, der Zugriff auf ihre Elemente durch Bereichsiteration jedoch zu einem Fehler führt.
A: Verwendung eines Typschalters oder von Value.MapKeys
Es gibt zwei Ansätze, dieses Problem zu lösen:
Typ Schalter:
Für Beispiel:
switch in := in.(type) { case map[string]*Book: for key, value := range in { fmt.Printf("Key: %s, Value: %v\n", key, value) } default: // Handle other cases as needed. }
Value.MapKeys:
Für Beispiel:
v := reflect.ValueOf(in) keys := v.MapKeys() for _, key := range keys { value := v.MapIndex(key) fmt.Printf("Key: %v, Value: %v\n", key.Interface(), value.Interface()) }
Das obige ist der detaillierte Inhalt vonWie iteriere ich über eine von einer Schnittstelle reflektierte Karte{}?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!