Heim > Backend-Entwicklung > Golang > Kann die „vergleichbare' Einschränkung von Go Generics für Kartenschlüssel in Versionen vor 1.20 abgeschwächt werden?

Kann die „vergleichbare' Einschränkung von Go Generics für Kartenschlüssel in Versionen vor 1.20 abgeschwächt werden?

Susan Sarandon
Freigeben: 2024-12-17 02:51:25
Original
664 Leute haben es durchsucht

Can Go Generics' `comparable` Constraint Be Weakened for Map Keys in Pre-1.20 Versions?

Go Generics: Typbeschränkung für Kartenschlüssel

Problem:

Bei Verwendung einer generisch definierten verknüpften Liste als Wenn Sie in Go 1.18 den Kartenschlüssel verwenden, wird eine Fehlermeldung angezeigt, die darauf hinweist, dass die verknüpfte Liste die vergleichbare Schnittstelle nicht implementiert. Gibt es eine schwächere alternative Einschränkung, die für diesen Zweck geeignet ist?

Antwort:

Go 1.20 (Februar 2023)

Die Eine vergleichbare Einschränkung ist die geeignete Catch-All-Einschränkung für Kartenschlüssel. In Go 1.20 wird die Inkonsistenz zwischen spezifikationsvergleichbaren und vergleichbaren Typen behoben, sodass Ihr Code erfolgreich kompiliert werden kann.

Go 1.18 und 1.19

Die vergleichbare Einschränkung in Go 1.18 und 1.19 sind für streng vergleichbare Typen konzipiert, die == und != ohne Laufzeitpanik unterstützen. Dies schließt Schnittstellen aus, auch solche, die Gleichheitsoperatoren unterstützen. Da Schnittstellen über einen unendlichen Typsatz verfügen, können sie nicht als vergleichbar instanziiert werden.

Um dieses Problem zu beheben, sollten Sie die Verwendung einer benutzerdefinierten Einschränkung in Betracht ziehen, die Vergleichbare einbettet, wie zum Beispiel:

type List interface {
    comparable
    isList() bool
}
Nach dem Login kopieren

Strukturelle Implementierung dieser Einschränkung würde die Verwendung der verknüpften Liste als Kartenschlüssel ermöglichen.

Das obige ist der detaillierte Inhalt vonKann die „vergleichbare' Einschränkung von Go Generics für Kartenschlüssel in Versionen vor 1.20 abgeschwächt werden?. 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