Maison  >  Article  >  développement back-end  >  Comment obtenir la fonctionnalité de compréhension de liste de Python dans Go ?

Comment obtenir la fonctionnalité de compréhension de liste de Python dans Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-10 20:10:021016parcourir

How to Achieve Python's List Comprehension Functionality in Go?

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

Dans cet article, nous explorons les moyens de reproduire la compréhension de liste de Python dans Go, en particulier la syntaxe :

array = [a for a in anotherArray if (some condition)]

Utilisation de la bibliothèque de filtres

Go propose une bibliothèque de filtres proposée par Rob Pike. Cette bibliothèque fournit une fonction Choose() qui prend une tranche et une fonction booléenne comme arguments. Il renvoie une nouvelle tranche contenant uniquement les éléments qui répondent à la condition spécifiée.

Par exemple :

import "google.golang.org/x/exp/slices"

func TestChoose(t *testing.T) {
    a := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
    expect := []int{2, 4, 6, 8}
    result := slices.Choose(a, isEven)
}

Avertissements concernant la bibliothèque de filtres

Bien que la bibliothèque de filtres offre une fonctionnalité pratique solution, sa documentation officielle déconseille son utilisation, en raison de sa moindre efficacité par rapport aux boucles for explicites.

Les boucles For comme alternative

La documentation Go recommande d'utiliser les boucles for comme alternative à la liste compréhensions. Ils offrent une solution plus efficace, notamment dans les situations où il faut contrôler l'ordre des opérations ou limiter la génération de données.

Par exemple, le code suivant calcule la valeur minimale dans une boucle imbriquée :

min := min(abs(a[i], b[j]) for i in range(n)
                          for j in range(i, n))

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