Les génériques résolvent les bogues liés au type dans les fonctions Go, permettant la création de fonctions à usage général qui acceptent et fonctionnent sur différents types de données. En utilisant des variables de type, les fonctions génériques peuvent s'adapter à n'importe quel type qui leur est transmis, évitant ainsi les erreurs de conflit de types et simplifiant et augmentant la flexibilité de votre code.
Les génériques Go sont utilisés pour résoudre les erreurs liées au type dans les fonctions
Introduits dans Go 1.18, les génériques sont une fonctionnalité puissante qui améliore la réutilisabilité et la flexibilité du code. Les génériques vous permettent de créer des fonctions à usage général pouvant fonctionner sur différents types de données. Cela élimine l’écriture de code en double et les erreurs liées au type.
Erreurs liées au type
En l'absence de génériques, si une fonction attend un type spécifique et que les paramètres qui lui sont transmis ont des types différents, des erreurs liées au type se produisent. Par exemple :
func AddInts(a, b int) int { return a + b } func main() { fmt.Println(AddInts(1, 2.5)) // 编译错误:不合法的类型参数 }
Le code ci-dessus provoquera une erreur de compilation car la fonction AddInts
attend deux paramètres entiers, mais 2.5
est un nombre à virgule flottante. AddInts
函数期望两个整数参数,但 2.5
是一个浮点数。
泛型解决方案
使用泛型,您可以创建接受任何类型的通用函数。通用函数使用类型变量,可以适应传递给它的任何类型。让我们重写 AddInts
函数使用泛型:
func Add[T numeric](a, b T) T { return a + b }
此函数使用类型变量 T
,该变量限制为 numeric
类型(包括数字类型,如整数、浮点数和复数)。由于 T
是一个通用类型,您可以传递任何实现了 numeric
接口的类型:
fmt.Println(AddInts(1, 2)) // 3 fmt.Println(AddInts(1.5, 2.5)) // 4.0
实战案例
泛型的一个常见用例是创建比较函数,这些函数可以比较不同类型的值。例如,以下函数使用泛型比较两个值的相等性:
func Equal[T comparable](a, b T) bool { return a == b }
现在,您可以使用 Equal
Solution générique
En utilisant des génériques, vous pouvez créer des fonctions universelles qui acceptent n'importe quel type. Une fonction générique utilise des variables de type qui peuvent s'adapter à n'importe quel type qui lui est transmis. Réécrivons la fonctionAddInts
pour utiliser des génériques : fmt.Println(Equal(1, 2)) // false fmt.Println(Equal("hello", "world")) // false
T
qui est restreinte aux types numériques
(y compris les types numériques , tels que les entiers, les flottants et les nombres complexes). Puisque T
est un type générique, vous pouvez transmettre n'importe quel type qui implémente l'interface numérique
: 🎜rrreee🎜🎜Un exemple pratique🎜🎜🎜Un cas d'utilisation courant des génériques est de créer des comparaisons Fonctions qui comparent des valeurs de différents types. Par exemple, la fonction suivante utilise des génériques pour comparer deux valeurs d'égalité : 🎜rrreee🎜 Vous pouvez maintenant utiliser la fonction Equal
pour comparer deux valeurs de tout type comparable : 🎜rrreee🎜🎜Conclusion 🎜🎜🎜 Generics in Go est un outil puissant pour résoudre les erreurs liées au type dans les fonctions, rendant votre code plus réutilisable et flexible. En utilisant des génériques, vous pouvez créer des fonctions à usage général pouvant fonctionner sur différents types de données, simplifiant ainsi votre code et évitant les erreurs liées 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!