Maison >développement back-end >Golang >Comment les génériques activent-ils de véritables fonctions génériques dans Go ?

Comment les génériques activent-ils de véritables fonctions génériques dans Go ?

DDD
DDDoriginal
2024-12-18 15:08:13412parcourir

How Do Generics Enable True Generic Functions in Go?

Fonctions génériques dans Go

Les types d'interface dans Go peuvent contenir n'importe quel type sans nécessiter aucune méthode implémentée, créant l'impression qu'ils servent de forme de fonctions génériques. Cependant, ce n’est pas le cas. Les véritables fonctions génériques, dont le type est inconnu au moment de la compilation, n'étaient pas prises en charge dans Go avant la version 1.18.

Dans Go 1.18, les génériques ont été introduits, permettant la création de fonctions génériques. Une fonction générique peut être définie à l'aide du mot-clé func suivi de paramètres de type entre crochets. Les paramètres de type spécifient les types acceptés par la fonction générique. Par exemple :

func Print[T any](s []T) {
    for _, v := range s {
        fmt.Print(v)
    }
}

Dans cet exemple, T est un paramètre de type qui peut représenter n'importe quel type. La fonction Print accepte une tranche de type []T et imprime les éléments de la tranche.

Pour utiliser la fonction générique, vous pouvez passer en argument une tranche du type souhaité :

// Passing a list of strings
Print([]string{"Hello, ", "world\n"})

// Passing a list of integers
Print([]int{1, 2})

Le résultat du programme sera :

Hello, world
12

Les fonctions génériques fournissent un moyen concis et sûr d'écrire du code pouvant fonctionner sur différents types sans sacrifier le type. sécurité.

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