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

Comment puis-je écrire des fonctions génériques dans Go pour gérer différents types numériques ?

Linda Hamilton
Libérer: 2024-12-20 07:54:14
original
843 Les gens l'ont consulté

How Can I Write Generic Functions in Go to Handle Different Numerical Types?

Écrire des fonctions génériques pour les types numériques dans Go

Dans Go, lorsque vous travaillez avec différents types numériques comme int et float64, il est nécessaire de créer fonctions spécifiques au type ou convertir des valeurs en un type commun. Une approche plus élégante consiste à écrire des fonctions génériques à l'aide de paramètres de type et de contraintes d'interface.

Utilisation des paramètres de type et de la contrainte numérique

Dans Go 1.18 et supérieur, vous pouvez définir une fonction générique avec un paramètre de type T et contrainte T à l'interface Number, définie comme suit :

import "golang.org/x/exp/constraints"

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

Cette contrainte inclut tous types entiers signés et non signés, ainsi que types flottants. Votre fonction générique peut s'écrire comme :

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

Appel de fonctions génériques

Avec cette fonction générique, vous pouvez désormais effectuer des opérations arithmétiques sur deux arguments quelconques de type numérique . Par exemple :

a := 1
b := 2.5

fmt.Println(add(a, b)) // 3.5
Copier après la connexion

Limitations

Notez que les arguments de la fonction générique doivent avoir le même type. De plus, les opérations pouvant être effectuées dans la fonction sont limitées à celles prises en charge par tous les types dans la contrainte Nombre (c'est-à-dire, -, * et /).

Gestion des nombres complexes

Go prend également en charge les types complexes (complex64 et complex128). Si vous souhaitez les inclure dans votre fonction générique, vous pouvez étendre la contrainte Nombre pour inclure des contraintes. Complexe :

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

N'oubliez pas que les opérateurs arithmétiques dans Go sont également pris en charge par les types complexes, à l'exception du % opérateur et opérateurs au niveau du bit, qui ne sont pris en charge que par les types entiers.

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