Maison > développement back-end > Golang > le corps du texte

Les langages génériques Go implémentent la prise en charge de plusieurs types

王林
Libérer: 2024-04-03 11:21:01
original
1134 Les gens l'ont consulté

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.

Les langages génériques Go implémentent la prise en charge de plusieurs types

Les génériques du langage Go implémentent la prise en charge de plusieurs 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.

Syntaxe générique

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
}
Copier après la connexion

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
Copier après la connexion

Il est à noter que les types génériques ne supportent que les types comparables (comparable).

Cas pratique : Algorithme de tri universel

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]
            }
        }
    }
}
Copier après la connexion

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 })
}
Copier après la connexion

Résumé

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!

Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal