"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je obtenir la fonctionnalité de compréhension de liste dans Go ?

Comment puis-je obtenir la fonctionnalité de compréhension de liste dans Go ?

Publié le 2024-11-10
Parcourir:536

How Can I Achieve List Comprehension Functionality in Go?

Équivalent Go pour la compréhension de liste de Python

La compréhension de liste de Python offre un moyen concis de générer des listes en filtrant et en transformant des éléments. Cependant, si vous passez à Go et que vous avez du mal à reproduire cette fonctionnalité, voici une solution :

Solution élégante utilisant le package de filtres

Heureusement, la communauté Go a fourni le package filter, qui offre des fonctionnalités similaires à la compréhension de liste de Python. Plus précisément, sa fonction Choose prend une tranche et une fonction de filtrage, renvoyant une nouvelle tranche contenant uniquement les éléments qui passent le filtre.

import "github.com/rogpeppe/go-internal/filter"

func Choose(slice []T, fn func(T) bool) []T

Exemple :

// Get even numbers from a list
a := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
expect := []int{2, 4, 6, 8}
result := filter.Choose(a, isEven)

Approche alternative : For Loops

Bien que le package de filtres soit pratique, il est important de noter que l'utilisation des boucles for traditionnelles reste une option viable et efficace. Les boucles Go's for offrent des opportunités de flexibilité et d'optimisation.

for i := range a {
    if someCondition {
        result = append(result, a[i])
    }
}

Conclusion

Malgré le manque de syntaxe native de compréhension de liste dans Go, le package de filtrage et les boucles for offrent des solutions robustes pour filtrer et transformer les listes. Bien que le package filter fournisse une syntaxe concise, les boucles for restent une alternative performante et efficace. En fin de compte, le choix de l'approche dépendra des exigences spécifiques de votre application.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3