Maison > développement back-end > Golang > Comment puis-je écrire des fonctions numériques génériques dans Go ?

Comment puis-je écrire des fonctions numériques génériques dans Go ?

Patricia Arquette
Libérer: 2025-01-04 04:25:39
original
375 Les gens l'ont consulté

How Can I Write Generic Numerical Functions in Go?

Écriture de fonctions numériques génériques dans Go

Dans Go, lorsque l'on travaille avec différents types numériques, on peut rencontrer le besoin de fonctions capables de gérer toute donnée numérique. Nous explorons ici comment résoudre ce cas d'utilisation dans Go 1.18 et versions ultérieures, ainsi que les solutions possibles pour les versions antérieures.

Go 1.18 et versions ultérieures :
Avec l'introduction du type paramètres dans Go 1.18, définir une fonction générique est simple.

func add[T Number](a, b T) T {
  return a + b;
}
Copier après la connexion

Ici, T représente le paramètre de type, contraint par le nombre interface. Cette interface, définie à l'aide du package golang.org/x/exp/constraints, garantit que T est un type numérique. Cette approche permet d'utiliser deux types numériques (entier ou virgule flottante) comme arguments, et la fonction renvoie le résultat avec le même type.

Versions antérieures de Go :

Dans les versions antérieures de Go, il existe quelques méthodes pour gérer cette situation :

  • Convertir en Float : Une option consiste à convertir toutes les entrées en float64, car elle couvre la plage des entiers et des flottants. Cependant, cela introduit des conversions de type inutiles et peut entraîner une perte de précision pour les données entières.
  • Créer des fonctions spécifiques à un type : Vous pouvez créer des fonctions distinctes pour chaque type numérique spécifique, telles que addInt (a, b int) int pour les entiers et addFloat(a, b float64) float64 pour les nombres à virgule flottante. Cette approche offre une sécurité de type mais nécessite le maintien de plusieurs fonctions.

Conclusion :

La solution préférée dépend de la version Go utilisée. Pour Go 1.18 et supérieur, l’approche de fonction générique utilisant des paramètres de type et la contrainte Number est la plus concise et la plus efficace. Pour les versions antérieures, il s'agit de choisir entre la conversion en float ou la gestion de fonctions spécifiques au type.

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