Maison  >  Article  >  développement back-end  >  Comment contraindre les types pour l’indexabilité dans Go Generics ?

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

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-30 23:01:30850parcourir

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>

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>

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>

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!

Déclaration:
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