Heim >Backend-Entwicklung >Golang >Wie erreicht man die Funktionalität des Python-Listenverständnisses in Go?

Wie erreicht man die Funktionalität des Python-Listenverständnisses in Go?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-19 04:20:02667Durchsuche

How to Achieve Python List Comprehension Functionality in Go?

Python-Listenverständnis-Äquivalent in Go

Pythons Listenverständnis bietet eine prägnante Möglichkeit, Sequenzen zu filtern und zu transformieren. In Go kann die Filterfunktion verwendet werden, um eine ähnliche Funktionalität zu erreichen. For-Schleifen bieten jedoch möglicherweise einen effizienteren und unkomplizierteren Ansatz.

Um das Python-Listenverständnis zu reproduzieren:

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

In Go können Sie die folgende Filterfunktion verwenden:

import (
    "fmt"
    "math"
    "math/big"
)

func main() {
    anotherArray := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
    newArray := filter(anotherArray, func(a int) bool {
        return a%2 == 0
    })
    fmt.Println(newArray) // [2 4 6 8]
}

Die Filterfunktion benötigt zwei Argumente: die zu filternde Sequenz und eine Prädikatfunktion, die bestimmt, welche Elemente eingeschlossen werden sollen. Es gibt ein Slice zurück, das nur die Elemente enthält, die das Prädikat erfüllen.

Für komplexere Ausdrücke können Sie Lambda-Funktionen verwenden, ähnlich dem Python-Beispiel:

min := func() *big.Int {
    a := big.NewInt(0)
    return a
}()
for i := 0; i < n; i++ {
    for j := i; j < n; j++ {
        potentialMin := big.NewInt(0)
        potentialMin.Abs(a[i].Sub(a[i], b[j]))
        if potentialMin.Cmp(min) == -1 {
            min = potentialMin
        }
    }
}

Allerdings ist das GoDoc für Die Filterbibliothek weist darauf hin, dass for-Schleifen effizienter und dem Paket vorzuziehen sind. Aus Gründen der Einfachheit und Lesbarkeit wird daher die Verwendung von for-Schleifen empfohlen.

Das obige ist der detaillierte Inhalt vonWie erreicht man die Funktionalität des Python-Listenverständnisses in Go?. 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