Heim >Backend-Entwicklung >Golang >Wie behebe ich „Typschnittstelle {} unterstützt keine Indizierung' in Go Maps?

Wie behebe ich „Typschnittstelle {} unterstützt keine Indizierung' in Go Maps?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-25 10:18:17695Durchsuche

How to Fix

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!

Stellungnahme:
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