Maison >développement back-end >Golang >Les langages génériques Go implémentent la prise en charge de plusieurs types

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

王林
王林original
2024-04-03 11:21:011139parcourir

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
}

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).

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]
            }
        }
    }
}

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 })
}

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!

Déclaration:
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