Maison > développement back-end > Golang > Comment puis-je écrire des fonctions génériques dans Go pour gérer n'importe quel type numérique ?

Comment puis-je écrire des fonctions génériques dans Go pour gérer n'importe quel type numérique ?

Barbara Streisand
Libérer: 2024-12-29 19:49:11
original
524 Les gens l'ont consulté

How Can I Write Generic Functions in Go to Handle Any Numerical Type?

Écriture de fonctions génériques pour tout type numérique dans Go

Lors de l'écriture de programmes Go, vous pouvez rencontrer le besoin de créer des fonctions pouvant accepter n'importe quel type numérique, que ce soit c'est un entier ou un float. Cela peut être difficile car Go différencie strictement ces types.

Conversion en Float

Une approche consiste à convertir tous les arguments numériques en float64 puisque ce type couvre la plage des nombres entiers. Cependant, cela n'est pas toujours souhaitable, car cela peut introduire une perte de précision ou des erreurs lors du traitement de grands entiers.

Fonctions séparées pour différents types

Une autre option consiste à créer des fonctions distinctes pour chaque nombre numérique. type, tel que addInt pour les entiers et addFloat pour les flottants. Bien que cela garantisse la sécurité des types, cela peut entraîner des problèmes de duplication de code et de maintenance.

Génériques utilisant des paramètres de type (Go 1.18 et versions ultérieures)

Avec l'introduction des paramètres de type dans Go 1.18, un plus une solution élégante est maintenant disponible. Vous pouvez définir des fonctions génériques qui prennent n'importe quel type T et utiliser des contraintes d'interface pour restreindre T aux types numériques.

Par exemple :

func add[T Number](a, b T) T {
    return a + b
}

type Number interface {
    constraints.Integer | constraints.Float
}
Copier après la connexion

Cette fonction peut être utilisée avec n'importe quel type numérique, y compris int, int64, float32 et float64. La contrainte Number garantit que seuls les types numériques sont autorisés.

Limitations

Gardez à l'esprit que les fonctions génériques nécessitent des arguments du même type. Par exemple, la fonction add nécessite que les deux arguments soient du même type numérique. De plus, les fonctions génériques ne prennent pas en charge tous les opérateurs, en particulier ceux spécifiques à certains types (par exemple, les opérateurs au niveau du bit pour les entiers).

Conclusion

L'utilisation de paramètres de type et de contraintes d'interface vous permet d'écrire des fonctions génériques. qui peut accepter n’importe quel type numérique. Cette approche assure la sécurité des types tout en évitant la duplication de code et en offrant une plus grande flexibilité.

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