Heim >Backend-Entwicklung >Golang >Wie behebe ich „Typschnittstelle {} unterstützt keine Indizierung' in Go Maps?
So indizieren Sie eine Karte mit einem Array von Objekten in Go: Beheben des Fehlers „Typschnittstelle {} unterstützt keine Indizierung“
Indizierung Eine Karte, die ein Array von Objekten in Go enthält, kann zu dem Fehler „Typschnittstelle {} unterstützt keine Indizierung“ führen. Dieser Fehler tritt auf, weil Go den erwarteten Typ der Array-Elemente, die durch den Schnittstellentyp dargestellt werden, nicht kennt.
Um diesen Fehler zu beheben und das gewünschte Element abzurufen, müssen Sie die Schnittstelle explizit konvertieren{} Wert auf den spezifischen Typ, den Sie erwarten.
Betrachten Sie die folgende Zuordnung:
Map := make(map[string]interface{}) Map["Users"] = Users_Array Map["Hosts"] = Hosts_Array
Um auf das erste Element des Arrays „Benutzer“ zuzugreifen, verwenden Sie Folgendes Code:
Users_Array := Map["Users"].([]User) firstUser := Users_Array[0]
Ähnlich gilt für das Array „Hosts“:
Hosts_Array := Map["Hosts"].([]Host) firstHost := Hosts_Array[0]
Diese Konvertierung in den spezifischen Typ stellt sicher, dass der Indizierungsvorgang erfolgreich durchgeführt werden kann. Wenn die Konvertierung nicht durchgeführt wird, wird der Fehler „Typschnittstelle {} unterstützt keine Indizierung“ angezeigt.
Hier ist ein Beispiel, das den Konvertierungs- und Indizierungsprozess demonstriert:
package main import "fmt" type Host struct { Name string } type User struct { Name string } func main() { Map := make(map[string]interface{}) Map["hosts"] = []Host{{"test.com"}, {"test2.com"}} Map["users"] = []User{{"john"}, {"jane"}} hm := Map["hosts"].([]Host) fmt.Println(hm[0]) um := Map["users"].([]User) fmt.Println(um[0]) }
Das obige ist der detaillierte Inhalt vonWie behebe ich „Typschnittstelle {} unterstützt keine Indizierung' in Go Maps?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!