Warum können Sie keine vergleichbare Einschränkung mit Auftragsoperatoren in Go-Generika verwenden?
Beim Erkunden von Go-Generika kann es zu einem Fehler kommen, wenn mit > Operator für integrierte vergleichbare Typen. Dies liegt daran, dass die vergleichbare Einschränkung nur Gleichheitsoperatoren (== und !=) unterstützt, während Ordnungsoperatoren (<, >, <= und >=) die geordnete Einschränkung erfordern.
Was ist der Unterschied zwischen vergleichbaren und geordneten Typen?
Die Vergleichseinschränkung gilt für Typen, die Gleichheitsoperatoren unterstützen, einschließlich Arrays und Strukturen mit vergleichbaren Feldern. Die Ordnungsoperatoren gelten jedoch für geordnete Typen, wie z. B. numerische Typen und Zeichenfolgen.
Lösung für Go 1.18 bis 1.20
In Go-Versionen 1.18 bis 1.20 können Sie die Einschränkung „constraints.Ordered“ verwenden, um Auftragsoperatoren zu unterstützen. Diese Einschränkung umfasst Typen wie Integer, Float und ~string.
Lösung für Go 1.21 und höher
In Go 1.21 führt die Standardbibliothek das cmp-Paket mit ein Geordnete Einschränkung und zwei generische Funktionen, Less und Compare, die die Arbeit mit geordneten Typen erleichtern.
Das obige ist der detaillierte Inhalt vonWarum kann „comparable' bei Generics nicht mit Order-Operatoren („usw.') verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!