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!