Maison >développement back-end >Golang >Comment puis-je appliquer des fonctions pour répertorier les éléments de manière concise dans Go ?

Comment puis-je appliquer des fonctions pour répertorier les éléments de manière concise dans Go ?

DDD
DDDoriginal
2024-11-20 13:46:13527parcourir

How Can I Apply Functions to List Elements Concisely in Go?

Application de fonctions concises pour lister des éléments dans Go

Les programmeurs Python sont familiers avec la compréhension de liste 便捷的pour appliquer des fonctions à des éléments de liste. Cependant, dans Go, une approche plus explicite basée sur des boucles est généralement utilisée.

Voici un extrait de code démontrant l'approche traditionnelle dans Go :

list := []int{1, 2, 3}
list2 := []int{}

for _, x := range list {
    list2 = append(list2, multiply(x, 2))
}

str := strings.Join(list2, ", ")

Existe-t-il une manière plus concise de faire est-ce dans Go ?

Présentation de la carte générique de Go 1.18 Fonction

Avec la sortie de Go 1.18, une fonction générique Map a été introduite. Elle permet l'application concise de fonctions pour lister les éléments et la génération d'une nouvelle liste contenant les valeurs transformées.

func Map[T, V any](ts []T, fn func(T) V) []V {
    result := make([]V, len(ts))
    for i, t := range ts {
        result[i] = fn(t)
    }
    return result
}

Exemple d'utilisation

La fonction Map peut être utilisé comme suit :

input := []int{4, 5, 3}
outputInts := Map(input, func(item int) int { return item + 1 })
outputStrings := Map(input, func(item int) string { return fmt.Sprintf("Item:%d", item) })

Conclusion

La fonction générique Map dans Go 1.18 fournit un moyen succinct et efficace d'appliquer des fonctions aux éléments de la liste, en créant une nouvelle liste avec les valeurs transformées. Cela simplifie le code et améliore la lisibilité.

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