Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich die Funktionalität des Listenverständnisses in Go erreichen?

Wie kann ich die Funktionalität des Listenverständnisses in Go erreichen?

DDD
DDDOriginal
2024-11-10 11:51:02875Durchsuche

How Can I Achieve List Comprehension Functionality in Go?

Go Equivalent für Pythons List Comprehension

Pythons List Comprehension bietet eine übersichtliche Möglichkeit, Listen durch Filtern und Transformieren von Elementen zu generieren. Wenn Sie jedoch auf Go umsteigen und es schwierig finden, diese Funktionalität zu reproduzieren, finden Sie hier eine Lösung:

Elegante Lösung mit Filterpaket

Zum Glück die Go-Community hat das Filterpaket bereitgestellt, das ähnliche Funktionen wie Pythons Listenverständnis bietet. Insbesondere benötigt die Funktion „Wählen“ einen Slice und eine Filterfunktion und gibt einen neuen Slice zurück, der nur die Elemente enthält, die den Filter passieren.

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

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

Beispiel:

// 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)

Alternative Ansatz: For-Schleifen

Obwohl das Filterpaket Komfort bietet, ist es wichtig zu beachten, dass die Verwendung herkömmlicher For-Schleifen immer noch ein Problem darstellt praktikable und effiziente Option. Gos For-Schleifen bieten Flexibilität und Optimierungsmöglichkeiten.

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

Fazit

Trotz des Fehlens einer nativen Listenverständnissyntax in Go bieten das Filterpaket und die For-Schleifen Robustheit Lösungen zum Filtern und Transformieren von Listen. Während das Filterpaket eine prägnante Syntax bietet, bleiben for-Schleifen eine leistungsfähige und effiziente Alternative. Letztendlich hängt die Wahl des Ansatzes von den spezifischen Anforderungen Ihrer Anwendung ab.

Das obige ist der detaillierte Inhalt vonWie kann ich die Funktionalität des Listenverständnisses in Go erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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