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 }
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!