Fehlerbehebung: „Typschnittstelle {} unterstützt keine Indizierung“ in Go
Beim Arbeiten mit einer Karte, die verschiedene Schnittstellen enthält{} Wenn Sie versuchen, sie zu indizieren, tritt möglicherweise ein Fehler auf, insbesondere „Typschnittstelle {} unterstützt keine Indizierung.“ Dies liegt daran, dass der Typ interface{} die Indizierung grundsätzlich nicht unterstützt.
Um Elemente aus dieser Karte erfolgreich zu indizieren und darauf zuzugreifen, ist es notwendig, den Wert interface{} explizit in den erwarteten Typ, z. B. einen Slice, zu konvertieren . Diese Konvertierung kann durch Angabe des Zieltyps in eckigen Klammern erreicht werden.
Betrachten Sie beispielsweise den folgenden Go-Code:
package main import "fmt" type Host struct { Name string } func main() { Map := make(map[string]interface{}) Map["hosts"] = []Host{Host{"test.com"}, Host{"test2.com"}} // Convert interface{} to a slice of Host hm := Map["hosts"].([]Host) fmt.Println(hm[0]) }
In diesem Beispiel wird die Karte „Map“ mit gefüllt ein Stück Host-Strukturen. Um auf das erste Element des Slice zuzugreifen, müssen Sie den Wert interface{} in „Map['hosts']“ in den Typ []Host konvertieren. Dies geschieht mit dem Ausdruck:
hm := Map["hosts"].([]Host)
Mit der Konvertierung können Sie wie auf jedes Standard-Go-Slice auf die Elemente des Slice zugreifen. In diesem Fall lautet die Ausgabe „test.com“, da es sich um das erste Element im Host-Slice handelt.
Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „Typschnittstelle {} unterstützt keine Indizierung' in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!