Go Equivalent für Pythons Listenverständnis
Pythons Listenverständnis 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“ ein Slice und eine Filterfunktion und gibt ein neues Slice zurück, das 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)
Alternativer Ansatz: For-Schleifen
Während das Filterpaket Komfort bietet, ist es wichtig zu beachten, dass die Verwendung traditioneller For-Schleifen ist immer noch eine praktikable und effiziente Option. Go's 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 for-Schleifen robuste 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.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3