So indizieren Sie eine Schnittstellenkarte in Go: Behebung von „Typschnittstelle {} unterstützt keine Indizierung“
In Go wird versucht, eine Indizierung durchzuführen Eine Interface{}-Zuordnung mit einem bestimmten Schlüssel kann zu dem Fehler „Typ Interface {} unterstützt keine Indizierung“ führen. Dies tritt auf, wenn versucht wird, auf Elemente aus einer Karte zuzugreifen, in der Werte als Schnittstellen gespeichert sind und die spezifischen Typen dieser Werte unbekannt sind.
Eine Möglichkeit, diesen Fehler zu beheben, besteht darin, den von der zurückgegebenen Wert explizit in einen Typ umzuwandeln Ordnen Sie mithilfe des Slice-Typs zu, den Sie als Wert erwarten. Betrachten Sie beispielsweise den folgenden Codeausschnitt, in dem eine Karte namens TopologyMap Zuordnungen von Zeichenfolgen zu Arrays von Objekten enthält:
Map := make(map[string]interface{}) Map["Users"] = Users_Array Map["Hosts"] = Hosts_Array
Um Elemente aus dieser Karte abzurufen, können Sie die folgende Syntax verwenden, sie führt jedoch zu Der Fehler „Typschnittstelle {} unterstützt keine Indizierung“:
Map["Users"][0]
Um dieses Problem zu beheben, konvertieren Sie den Schnittstellenwert mithilfe einer Typzusicherung explizit in den gewünschten Typ. Hier ist ein Beispiel, das zeigt, wie dies für eine Zuordnung von Zeichenfolgen und Slices von Hosts gemacht wird:
import ( "fmt" ) type Host struct { Name string } func main() { Map := make(map[string]interface{}) Map["hosts"] = []Host{Host{"test.com"}, Host{"test2.com"}} hm := Map["hosts"].([]Host) fmt.Println(hm[0]) }
In diesem Beispiel konvertieren wir den unter dem Schlüssel „hosts“ gespeicherten Wert explizit per Typumwandlung in ein Slice von Host-Objekte, die den Zugriff auf einzelne Host-Elemente ermöglichen.
Mit diesem Ansatz können Sie eine Schnittstellen{}-Zuordnung effektiv indizieren und die spezifischen Werte abrufen, die Sie benötigen, auch wenn deren Typen nicht bekannt sind zur Kompilierzeit.
Das obige ist der detaillierte Inhalt vonWie indiziere ich eine Interface{}-Karte in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!