Maison > développement back-end > Golang > Comment puis-je mapper efficacement un tableau d'objets dans Go ?

Comment puis-je mapper efficacement un tableau d'objets dans Go ?

Linda Hamilton
Libérer: 2024-12-19 11:44:10
original
465 Les gens l'ont consulté

How Can I Efficiently Map an Array of Objects in Go?

Mappage d'un tableau d'objets dans Go

Dans Node.js, vous pouvez utiliser la fonction map pour transformer un tableau d'objets en un tableau de valeurs. Vous vous demandez comment y parvenir dans Go avec concision ?

Solution Go : cartographier en tant que fonction de niveau supérieur

Contrairement aux méthodes de Go, les fonctions de niveau supérieur peuvent nécessiter des tapez des arguments. En utilisant cela, nous pouvons définir Map comme une fonction générique :

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

Maintenant, vous pouvez utiliser cette fonction comme suit :

names := []string{"Alice", "Bob", "Carol"}
fmt.Println(Map(names, utf8.RuneCountInString)) // Output: [5 3 5]
Copier après la connexion

Contexte historique : pourquoi la carte est absente dans les bibliothèques Go standard

Avant Go 1.18, des discussions approfondies dans le numéro GitHub pour le La proposition de golang.org/x/exp/slices a envisagé d'ajouter une fonction Map, mais a finalement décidé de ne pas le faire en raison de préoccupations concernant :

  • Coûts cachés des opérations dans les one-liners
  • Erreur incertaine gestion au sein de Map
  • Encourager un style qui s'écarte de l'approche traditionnelle de Go

Streams L'API est considérée comme un futur foyer potentiel pour une telle fonction.

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal