Maison >développement back-end >Golang >La contrainte « comparable » de Go Generics peut-elle être affaiblie pour les clés de carte dans les versions antérieures à 1.20 ?
Problème :
Lors de l'utilisation d'une liste chaînée définie de manière générique comme map key dans Go 1.18, un message d'erreur apparaît indiquant que la liste chaînée n'implémente pas l'interface comparable. Existe-t-il une contrainte alternative plus faible adaptée à cet effet ?
Réponse :
Go 1.20 (février 2023)
Le la contrainte comparable est la contrainte fourre-tout appropriée pour les clés de carte. Dans Go 1.20, l'incohérence entre les types comparables aux spécifications et comparables est résolue, permettant à votre code de se compiler avec succès.
Go 1.18 et 1.19
La contrainte comparable dans Go 1.18 et 1.19 sont conçus pour des types strictement comparables qui prennent en charge == et != sans panique à l'exécution. Cela exclut les interfaces, même celles qui prennent en charge les opérateurs d'égalité. Étant donné que les interfaces ont un jeu de types infini, elles ne peuvent pas être instanciées de manière comparable.
Pour résoudre ce problème, envisagez d'utiliser une contrainte personnalisée qui intègre des comparables, telle que :
type List interface { comparable isList() bool }
Implémentation structurelle de cette contrainte permettrait à la liste chaînée d'être utilisée comme clé de carte.
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!