Maison >développement back-end >Golang >Les langages génériques Go implémentent la prise en charge de plusieurs types
Les génériques du langage Go fournissent une prise en charge multi-types, permettant aux développeurs de créer du code pouvant être utilisé pour plusieurs types. La syntaxe générique déclare un type générique en spécifiant des paramètres de type dans le nom du type et déduit automatiquement les paramètres de type dans les appels de fonction. Les génériques prennent en charge des types comparables et peuvent être utilisés pour créer des algorithmes et des fonctions communs, tels que l'algorithme de tri universel, qui utilise des fonctions de comparaison personnalisées pour trier différents types.
Le langage Go a introduit la fonctionnalité générique dans la version 1.18, permettant aux développeurs de créer du code pouvant être utilisé pour plusieurs types. Les génériques peuvent améliorer la réutilisabilité et la flexibilité du code.
Lors de la déclaration d'un type générique, vous devez spécifier les paramètres de type entre crochets dans le nom du type :
func Max[T comparable](a, b T) T { if a > b { return a } return b }
Lors de l'utilisation d'un type générique dans un appel de fonction, le compilateur Golang déduira automatiquement les paramètres de type :
fmt.Println(Max(1, 2)) // 输出:2 fmt.Println(Max(1.2, 3.4)) // 输出:3.4 fmt.Println(Max("Hello", "Wolrd")) // 输出:Wolrd
Il est à noter que les types génériques ne supportent que les types comparables (comparable
).
En utilisant des génériques, nous pouvons créer un algorithme de tri universel qui fonctionne pour tout type :
func Sort[T any](arr []T, less func(T, T) bool) { for i := 0; i < len(arr); i++ { for j := 0; j < len(arr)-1-i; j++ { if less(arr[j], arr[j+1]) { arr[j], arr[j+1] = arr[j+1], arr[j] } } } }
En utilisant des fonctions de comparaison personnalisées, nous pouvons utiliser cet algorithme de tri pour différents types :
func SortInts(arr []int) { Sort(arr, func(a, b int) bool { return a < b }) } func SortStrings(arr []string) { Sort(arr, func(a, b string) bool { return a < b }) }
La fonctionnalité générique du langage Go offre une puissante prise en charge multi-types, permettant aux développeurs de créer du code réutilisable et flexible. En utilisant les techniques présentées ci-dessus, nous pouvons facilement créer des algorithmes et des fonctions à usage général qui fonctionnent sur de nombreux types.
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!