Heim >Backend-Entwicklung >Golang >Wie iteriere ich sicher über ein Map[string]*Book nach der Konvertierung von der Schnittstelle{}?
Schnittstelle{} mit Iteration in eine Karte konvertieren
In Ihrem Code ist beim Versuch, die Schnittstelle{} in eine Karte zu konvertieren, ein Fehler aufgetreten . Um dieses Problem zu beheben und die Iteration über Kartenelemente zu ermöglichen, führen Sie die folgenden Schritte aus:
Behauptungen verwenden:
Ersetzen Sie den reflexionsbasierten Ansatz durch direkte Typzusicherungen, wie in gezeigt der folgende Code:
func process(in interface{}, isSlice bool, isMap bool) { if isMap { v := in.(map[string]*Book) fmt.Printf("Type: %v\n", v) for _, s := range v { fmt.Printf("Value: %v\n", s) } } }
Diese Behauptung weist den Wert „interface{}“ einer Variablen vom Typ „map[string]*Book“ zu, wenn die Bedingung erfüllt ist traf. Dieser Ansatz ist effizienter und erfordert keine Reflexion.
Alternativ können Sie Switch-Anweisungen verwenden, um verschiedene Arten von Eingaben zu verarbeiten, ohne Reflexion zu verwenden.
Benutzerdefinierte Zuordnungsschlüssel mit Reflexion verwenden ( Optional):
Wenn Sie dennoch Reflection verwenden müssen, können Sie Kartenschlüssel mithilfe von Value.MapKeys abrufen, anstatt direkt darüber zu iterieren Wert. Einzelheiten zu diesem Ansatz finden Sie in der in der bereitgestellten Lösung erwähnten Antwort zum Stapelüberlauf.
Das obige ist der detaillierte Inhalt vonWie iteriere ich sicher über ein Map[string]*Book nach der Konvertierung von der Schnittstelle{}?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!