Maison >développement back-end >Golang >Comment puis-je mapper efficacement des tableaux d'objets dans Go à l'aide d'une fonction générique ?

Comment puis-je mapper efficacement des tableaux d'objets dans Go à l'aide d'une fonction générique ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-28 18:24:20595parcourir

How Can I Efficiently Map Arrays of Objects in Go Using a Generic Function?

Mappage de tableaux d'objets à l'aide d'une fonction générique

Dans Go, les fonctions opérant sur des tableaux ont certaines limitations en raison de leur nature rigide et de la surcharge associée avec copie des arguments. Cet article explore une approche pour mapper des tableaux d'objets de manière concise à l'aide d'une fonction générique de niveau supérieur.

Solution One-Liner utilisant une fonction générique

Pour mapper un tableau d'objets dans Go avec un one-liner, vous pouvez définir une fonction générique nommée Map comme suit :

func Map[T, U any](ts []T, f func(T) U) []U {
    us := make([]U, len(ts))
    for i := range ts {
        us[i] = f(ts[i])
    }
    return us
}

Cette fonction prend un tableau de type T et une fonction f qui prend un paramètre de type T et renvoie une valeur de type U. Il renvoie un tableau de type U contenant les valeurs mappées.

Utilisation

Pour mapper un tableau d'objets, vous pouvez utiliser la fonction Map comme ceci :

names := []string{"Alice", "Bob", "Carol"}
fmt.Println(Map(names, utf8.RuneCountInString))

Ce code imprimera la sortie suivante sur stdout :

[5 3 5]

Considérations

La fonction Map est basée sur une boucle et peut introduire une surcharge par rapport aux fonctions natives fonctionnant sur des tableaux. Il est important de peser les avantages d'une syntaxe concise par rapport aux implications potentielles en termes de performances.

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