Pourquoi ne pouvez-vous pas utiliser de contraintes comparables avec les opérateurs de commande dans les génériques Go ?
Lors de l'exploration des génériques Go, vous pouvez rencontrer une erreur lorsque en utilisant > opérateur sur des types comparables intégrés. En effet, la contrainte comparable ne prend en charge que les opérateurs d'égalité (== et !=), tandis que les opérateurs d'ordre (<, >, <= et >=) nécessitent la contrainte Ordonné.
Quelle est la différence entre les types comparables et ordonnés ?
La contrainte comparable concerne les types qui prennent en charge les opérateurs d'égalité, y compris les tableaux et les structures avec des types comparables. champs. Cependant, les opérateurs d'ordre sont applicables aux types ordonnés, tels que les types numériques et les chaînes.
Solution pour Go 1.18 à 1.20
Dans les versions Go 1.18 à 1.20 , vous pouvez utiliser la contrainte contraints.Ordonné pour prendre en charge les opérateurs de commande. Cette contrainte inclut des types comme Integer, Float et ~string.
Solution pour Go 1.21 et supérieur
Dans Go 1.21, la bibliothèque standard introduit le package cmp avec le Contrainte ordonnée et deux fonctions génériques, Less et Compare, qui facilitent le travail avec des types ordonnés.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!