Golang-Fehler beheben: „x' (Typ T) kann nicht als Typ U im Kartenindex verwendet werden, Lösung

WBOY
Freigeben: 2023-08-18 16:25:49
Original
1361 Leute haben es durchsucht

解决golang报错:cannot use 'x' (type T) as type U in map index,解决方法

Lösung für Golang-Fehler: „x“ (Typ T) kann nicht als Typ U im Kartenindex verwendet werden, Lösung

Bei der Verwendung von Golang-Programmierung können verschiedene Fehler auftreten. Einer davon ist der Fehler „‚x‘ (Typ T) kann nicht als Typ U im Kartenindex verwendet werden“ bei der Verwendung von Karte. Dieser Fehler scheint eher unklar zu sein, aber seine Bedeutung ist eigentlich sehr einfach, das heißt, wir haben versucht, einen falschen Typ als Index der Karte zu verwenden.

Um diesen Fehler besser zu verstehen, schauen wir uns ein konkretes Beispiel an:

package main

import "fmt"

type Person struct {
    Name string
    Age  int
}

func main() {
    m := make(map[Person]bool)
    p := Person{Name: "Alice", Age: 20}

    m[p] = true
}
Nach dem Login kopieren

Im obigen Beispiel versuchen wir, eine Struktur vom Typ „Person“ als Index der Karte zu verwenden. Wir wissen jedoch, dass Kartenindizes von vergleichbarem Typ sein müssen. Strukturtypen sind nicht vergleichbar, daher meldet der Compiler einen Fehler: „‚p‘ (Typ Person) kann nicht als Typ Person im Kartenindex verwendet werden.“

Also, wie kann man dieses Problem lösen?

Lösung 1: Konvertieren Sie den Strukturtyp in einen vergleichbaren Typ.

Eine Lösung besteht darin, den Strukturtyp in einen vergleichbaren Typ umzuwandeln. In Golang können wir Zeichenfolgen oder Ganzzahlen als Kartenindizes verwenden. Daher können wir die Felder in der Struktur zu einer Zeichenfolge oder Ganzzahl kombinieren und diese dann als Index der Karte verwenden.

Das Folgende ist ein Beispielcode:

package main

import "fmt"

type Person struct {
    Name string
    Age  int
}

func main() {
    m := make(map[string]bool)
    p := Person{Name: "Alice", Age: 20}
    key := fmt.Sprintf("%s-%d", p.Name, p.Age)

    m[key] = true
}
Nach dem Login kopieren

Im obigen Code kombinieren wir die Felder „Name“ und „Alter“ in der Struktur „Person“ zu einer Zeichenfolge und verwenden die Zeichenfolge dann als Index der Karte. Dadurch wird das Problem der Fehlerberichterstattung gelöst.

Lösung 2: Zeigertypen als Kartenindizes verwenden

Eine andere Lösung besteht darin, Zeigertypen als Kartenindizes zu verwenden. Zeigertypen können verglichen werden, sodass der Zeiger direkt als Index der Karte verwendet werden kann.

Das Folgende ist ein Beispielcode:

package main

import "fmt"

type Person struct {
    Name string
    Age  int
}

func main() {
    m := make(map[*Person]bool)
    p := &Person{Name: "Alice", Age: 20}

    m[p] = true
}
Nach dem Login kopieren

Im obigen Code verwenden wir den Zeigertyp „*Person“ als Index der Karte, damit das Fehlerproblem gelöst werden kann.

Zusammenfassung:

Beim Programmieren in Golang ist der Fehler „‚x‘ (Typ T) kann nicht als Typ U im Kartenindex verwendet werden“ aufgetreten, da wir versucht haben, den falschen Typ als Index der Karte zu verwenden. Es gibt zwei Möglichkeiten, diesen Fehler zu beheben: Konvertieren Sie den Strukturtyp in einen vergleichbaren Typ oder verwenden Sie einen Zeigertyp als Index der Karte.

Ich hoffe, dass die Einleitung dieses Artikels den Lesern helfen kann, dieses Fehlerproblem besser zu verstehen und zu lösen. Machen Sie unsere Golang-Programmierung reibungsloser und effizienter!

Das obige ist der detaillierte Inhalt vonGolang-Fehler beheben: „x' (Typ T) kann nicht als Typ U im Kartenindex verwendet werden, Lösung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage