Heim > Backend-Entwicklung > Golang > Vielleicht Bag in Golang (Typ string und string stimmen nicht überein)

Vielleicht Bag in Golang (Typ string und string stimmen nicht überein)

WBOY
Freigeben: 2024-02-09 08:06:18
nach vorne
404 Leute haben es durchsucht

也许是 golang 中的 bag(类型字符串和字符串不匹配)

PHP-Redakteur Xinyi stellt Ihnen die Taschentypen in Golang vor. In Golang bezieht sich der Bag-Typ auf eine Datenstruktur, die zum Speichern einer Sammlung von Elementen verwendet wird. Im Gegensatz zu anderen Datenstrukturen können Elemente in einer Tasche wiederholt vorkommen und die Reihenfolge spielt keine Rolle. Dies bedeutet, dass der Beuteltyp in Situationen sehr nützlich ist, in denen keine Reihenfolge erforderlich ist, z. B. bei der Berechnung der Häufigkeit von Elementen oder bei der Bestimmung, ob ein Element vorhanden ist. Es ist zu beachten, dass der Taschentyp und der String-Typ in Golang nicht übereinstimmen. Daher müssen Sie bei der Verwendung auf Probleme bei der Typkonvertierung achten.

Frageninhalt

Fragen Sie mich nicht, warum ich das mache, sondern sagen Sie mir einfach, wie es möglich ist:

gopls-Fehler: Zeichenfolge und Zeichenfolgentyp stimmen nicht überein

type mapsi2[t string | int | float32 | float64] struct {
    keys   []string
    values []t
}

func (mapsi mapsi2[string]) setvalue(key string, value string) {
    for i, keymapsi := range mapsi.keys {
        if key == keymapsi {
            mapsi.values[i] = value
        }
    }
}
Nach dem Login kopieren

Zuerst dachte ich, der LSP-Server sei dumm, aber das war nicht der Fall.

Fehler aufgetreten: Zeichenfolge und Zeichenfolgentyp stimmen nicht überein

go run ./cmd/app
# devllart/foobarman/src/mapsi
src/mapsi/mapsi.go:48:13: invalid operation: key == keyMapsi (mismatched types string and string)
make: *** [Makefile:6: run] Error 2
Nach dem Login kopieren

Ich habe gegoogelt und in den Suchergebnissen erhalte ich nur dann eine Fehlermeldung, wenn ich Zeiger mit Zeichenfolgen vergleiche... genau dort, der Typ ist alles in Ordnung, oder ich liege falsch.

Workaround

Ihre Methodensignatur sollte func (mapsi Mapsi2[T]) SetValue(key string, value T) lauten.

Hängt nicht mit Ihrem Kompilierungsproblem zusammen, aber bitte beachten Sie:

  • Möglicherweise möchten Sie einen Zeigerempfänger verwenden, damit Änderungen über Methodenaufrufe hinaus bestehen bleiben
  • Möglicherweise möchten Sie auch den Fall bearbeiten, dass der Schlüssel nicht gefunden wird

Auf dem Spielplatz ansehen: https://www.php.cn/link/6934456f54af5ab56c6f347c6427afeb一个>.

Das obige ist der detaillierte Inhalt vonVielleicht Bag in Golang (Typ string und string stimmen nicht überein). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
lsp
Quelle:stackoverflow.com
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