Heim > Backend-Entwicklung > Golang > Warum kann die „vergleichbare' Einschränkung von Go Generics nicht mit Bestelloperatoren verwendet werden?

Warum kann die „vergleichbare' Einschränkung von Go Generics nicht mit Bestelloperatoren verwendet werden?

Patricia Arquette
Freigeben: 2024-12-12 13:02:11
Original
562 Leute haben es durchsucht

Why Can't Go Generics' `comparable` Constraint Be Used with Ordering Operators?

Generika in Go: Ordnungsoperatoren sind mit vergleichbaren Einschränkungen nicht kompatibel

Einführung

Bei der Erkundung von Go-Generika können Entwickler auf Schwierigkeiten stoßen wenn Sie versuchen, Auftragsoperatoren wie > innerhalb von Funktionen, die Typen akzeptieren, die die vergleichbare Einschränkung erfüllen. Dieser Artikel befasst sich mit den Gründen für diese Inkompatibilität und untersucht mögliche Lösungen.

vergleichbare Einschränkung

Die vergleichbare Einschränkung, wie in den Go-Sprachspezifikationen definiert, gilt für Typen, die unterstützt Gleichheitsoperatoren (== und !=). Dazu gehören Typen, die als Zuordnungsschlüssel verwendet werden können, einschließlich Arrays und Strukturen mit vergleichbaren Feldern.

Ordnungsoperatoren

Während die Go-Sprachspezifikationen den Begriff „Vergleichsoperatoren“ verwenden „Um sowohl Gleichheits- als auch Ordnungsoperatoren zu umfassen, unterscheiden die Spezifikationen klar zwischen den Typen, für die sie gelten. Insbesondere Bestelloperatoren wie > und < sind für Operanden gedacht, die „geordnet“ sind.

Inkompatibilität mit Comparable

Leider bedeutet die Einschränkung „Comparable“ nicht, dass ein Typ Ordnungsoperatoren unterstützt. Dies geht aus der aufgetretenen Fehlermeldung hervor: „Ungültiger Vorgang: t1 > t2 kann nicht verglichen werden (Operator > nicht auf T definiert).“

Lösungen

Go 1.21 und höher

Für Go-Versionen 1.21 und höher können Entwickler nutzen die von der Standardbibliothek eingeführte Typbeschränkung cmp.Ordered. Diese Einschränkung und die zugehörigen Funktionen „Less“ und „Compare“ erleichtern Vergleiche bei geordneten Typen.

Go 1.18 bis 1.20

Für Go-Versionen zwischen 1.18 und 1.20 gelten die Einschränkungen .Ordered-Einschränkungen aus dem Paket golang.org/x/exp können für Vergleiche mit Ordnungsoperatoren verwendet werden.

Das obige ist der detaillierte Inhalt vonWarum kann die „vergleichbare' Einschränkung von Go Generics nicht mit Bestelloperatoren verwendet 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