Wie erreicht man die Listenverständnisfunktionalität von Python in Go?

Mary-Kate Olsen
Freigeben: 2024-11-10 20:10:02
Original
1016 Leute haben es durchsucht

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

Pythons Listenverständnis-Äquivalent in Go

In diesem Beitrag untersuchen wir Möglichkeiten, Pythons Listenverständnis in Go zu replizieren, insbesondere die Syntax:

array = [a for a in anotherArray if (some condition)]
Nach dem Login kopieren

Nutzung der Filterbibliothek

Go bietet eine von Rob Pike vorgeschlagene Filterbibliothek. Diese Bibliothek stellt eine Funktion Choose() bereit, die ein Slice und eine boolesche Funktion als Argumente verwendet. Es wird ein neues Slice zurückgegeben, das nur Elemente enthält, die die angegebene Bedingung erfüllen.

Zum Beispiel:

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)
}
Nach dem Login kopieren

Vorbehalte der Filterbibliothek

Während die Filterbibliothek eine praktische Funktion bietet Lösung, in der offiziellen Dokumentation wird von der Verwendung abgeraten, da die Effizienz im Vergleich zu expliziten for-Schleifen geringer ist.

For-Schleifen als Alternative

In der Go-Dokumentation wird die Verwendung von for-Schleifen als Alternative zu list empfohlen Verständnisse. Sie bieten eine effizientere Lösung, insbesondere in Situationen, in denen die Reihenfolge von Operationen kontrolliert oder die Datengenerierung begrenzt werden muss.

Zum Beispiel berechnet der folgende Code den Mindestwert in einer verschachtelten Schleife:

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

Das obige ist der detaillierte Inhalt vonWie erreicht man die Listenverständnisfunktionalität von Python in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage