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
Linda Hamiltonoriginal
2024-12-19 11:44:10527parcourir

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
}

Maintenant, vous pouvez utiliser cette fonction comme suit :

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

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!

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