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

Comment contraindre les types pour l'indexabilité dans Go Generics ?

Mary-Kate Olsen
Libérer: 2024-10-30 23:01:30
original
849 Les gens l'ont consulté

How to Constrain Types for Indexability in Go Generics?

Types contraignants pour l'indexabilité dans Go Generics

L'indexation est une opération fondamentale dans de nombreux scénarios de programmation. Lorsque vous travaillez avec des génériques, il peut être avantageux de limiter un paramètre de type générique aux types prenant en charge l'indexation. Cela garantit que le type sous-jacent est accessible et modifié à l'aide de la syntaxe d'indice familière.

Une façon d'y parvenir consiste à utiliser une contrainte d'interface. Une interface définit un ensemble d’opérations requises pour un type à implémenter. Dans ce cas, nous pouvons définir une interface nommée Indexable qui représente les types prenant en charge l'indexation via l'opérateur d'indice :

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

En utilisant l'opérateur ~, nous permettons à l'interface d'accepter directement les deux types et les pointeurs vers ceux-ci. genres. Cela nous donne la flexibilité de travailler avec une sémantique de valeur ou de référence.

Ensuite, nous pouvons créer une fonction générique qui prend un type Indexable comme paramètre. Cette fonction peut effectuer des opérations sur le type qui impliquent une indexation :

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

La fonction GetAt renvoie la valeur de l'octet à l'index spécifié. Il peut être utilisé avec n'importe quel type implémentant l'interface Indexable, y compris les tableaux d'octets et les chaînes :

<code class="go">var data []byte = []byte{1, 2, 3, 4, 5}
result := GetAt(data, 2) // result is 3</code>
Copier après la connexion

Il est important de noter que l'utilisation d'une contrainte d'union limite l'ensemble des opérations pouvant être appliquées dans la fonction. En effet, la contrainte d'union restreint l'argument de type à ceux qui partagent un ensemble commun d'opérations.

En conclusion, l'utilisation d'une contrainte d'interface qui représente l'indexabilité peut être une technique utile pour contraindre les types génériques. Il vous permet d'écrire du code générique pouvant fonctionner sur n'importe quel type prenant en charge l'indexation.

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!