Maison > développement back-end > Golang > le corps du texte

Comment pouvons-nous contraindre efficacement les types indexables dans les génériques Go 1.18 ?

Patricia Arquette
Libérer: 2024-10-30 03:49:28
original
782 Les gens l'ont consulté

How Can We Effectively Constrain Indexable Types in Go 1.18 Generics?

Contraintes d'indexation dans les génériques Go 1.18

Avec l'introduction des génériques dans Go 1.18, les développeurs ont la possibilité d'implémenter des algorithmes qui fonctionnent avec des genres. Une exigence courante consiste à utiliser des types prenant en charge l'indexation, tels que des tableaux, des tranches, des cartes et des chaînes.

Contrainte indexable

Pour restreindre un paramètre de type aux types indexables , envisagez d'utiliser la contrainte suivante avec une union :

<code class="go">type Indexable interface {
    ~[]byte | ~string
}</code>
Copier après la connexion

Limitations de la contrainte indexable

Bien que la contrainte ci-dessus fonctionne pour l'indexation d'octets et de chaînes, il existe des limites à en l'utilisant avec d'autres types indexables, tels que des cartes et des tableaux :

  • Maps : L'union doit contenir uniquement des types de cartes avec des types de clé et d'éléments identiques. Cette restriction le rend peu pratique pour les algorithmes génériques qui doivent gérer des cartes avec des clés et des valeurs différentes.
  • Tableaux : La longueur d'un tableau fait partie de son type, une union devrait donc spécifier toutes les longueurs possibles. Cela peut être fastidieux et sujet à des erreurs hors limites.

Approche alternative

En raison de ces limitations, la seule union pratique qui prend en charge l'indexation est []octet | chaîne. Cette union permet les opérations d'indexation mais ne prend pas en charge les opérations sur les plages car il lui manque un type de base.

Exemple d'utilisation

L'exemple suivant montre comment utiliser la contrainte Indexable :

<code class="go">func GetAt[T Indexable](v T, i int) byte {
    return v[i]
}</code>
Copier après la connexion

Cette fonction prend une valeur indexable et un index et renvoie l'octet à l'index spécifié.

Conclusion

While Go 1.18 fournit un moyen de contraindre les types à des types indexables à l'aide d'une union, les limites de cette contrainte signifient qu'elle n'est pratique que pour un ensemble limité de cas d'utilisation, à savoir l'indexation d'octets et de chaînes.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!