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 , pensez à utiliser la contrainte suivante avec une union :
type Indexable interface {
~[]byte | ~string
}
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 à son utilisation avec d'autres types indexables, tels que les cartes et les tableaux. :
Approche alternative
En raison de ces limitations, la seule union pratique qui prend en charge l'indexation est []octet | chaîne. Cette union autorise les opérations d'indexation mais ne prend pas en charge les opérations sur les plages car elle ne dispose pas d'un type de base.
Exemple d'utilisation
L'exemple suivant montre comment utiliser la contrainte Indexable :
func GetAt[T Indexable](v T, i int) byte {
return v[i]
}
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 pour contraindre des types à des types indexables à l'aide d'une union, les limitations 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.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3