Heim > Backend-Entwicklung > Golang > Wie indiziere ich eine Interface{}-Karte in Go?

Wie indiziere ich eine Interface{}-Karte in Go?

Patricia Arquette
Freigeben: 2024-12-18 11:50:12
Original
522 Leute haben es durchsucht

How to Index into an interface{} Map in Go?

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
Nach dem Login kopieren

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]
Nach dem Login kopieren

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])
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage