Maison > développement back-end > Golang > Comment puis-je utiliser en toute sécurité les opérateurs de commande (<, >, <=, >=) avec Go Generics ?

Comment puis-je utiliser en toute sécurité les opérateurs de commande (<, >, <=, >=) avec Go Generics ?

DDD
Libérer: 2024-12-11 13:27:18
original
248 Les gens l'ont consulté

How Can I Safely Use Order Operators (<, >, <=, >=) avec Go Generics ?
, =) avec Go Generics ? " />

Go Generics : Opérateurs de commande avec des contraintes comparables

Dans Go 1.18, les génériques permettent des contraintes personnalisées pour renforcer la compatibilité des types. Cependant, lorsque vous tentez d'utiliser le '>' avec la contrainte 'comparable', des erreurs peuvent survenir.

La contrainte 'comparable'

La contrainte 'comparable' vérifie qu'un type prend en charge les opérateurs d'égalité ('==' et '!= '). Il englobe les types éligibles comme clés de mappage, y compris les tableaux et les structures avec des champs comparables. Notamment, les interfaces sont exclues car elles peuvent provoquer des paniques à l'exécution. comparaison.

Ordonné vs. Comparable

Bien que les spécifications Go mentionnent les opérateurs de commande sous le terme « opérateurs de comparaison », elles font la différence entre l'équivalence ('==' et '!=') et la commande. opérateurs ("<', '>', '<=', '>='). L'ordre est limité aux types qui sont. 'ordered.'

Go Versions et solutions

Go 1.21

  • Introduire 'cmp.Ordered' à partir de la bibliothèque standard.

Aller à la version 1.18 1.20

  • Utilisez 'constraints.Ordered' du package expérimental 'golang.org/x/exp'. Cette contrainte prend en charge les opérateurs de commande et inclut les entiers, les flottants et. chaînes.

Exemple :

import "golang.org/x/exp/constraints"

func getBiggerNumber[T constraints.Ordered](t1, t2 T) T {
    if t1 > t2 {
        return t1
    }
    return t2
}
Copier après la connexion

En choisissant la contrainte appropriée, vous assurez la compatibilité des types et le comportement de comparaison correct dans vos fonctions génériques.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal