Heim > Backend-Entwicklung > Golang > Das Pipeline-Muster in Go

Das Pipeline-Muster in Go

WBOY
Freigeben: 2024-07-29 21:18:20
Original
1063 Leute haben es durchsucht

The Pipeline Pattern in Go

Das Pipeline-Muster ist eine leistungsstarke Möglichkeit, Daten stufenweise gleichzeitig zu verarbeiten. Jede Stufe führt eine andere Operation an den Daten durch und geht dann zur nächsten Stufe über.

Durch die Verwendung von Kanälen zur Weitergabe der Daten kann das Pipeline-Muster in vielen Fällen die Leistung verbessern.

Die Idee ist wirklich sehr einfach: Jede Stufe iteriert über einen Kanal und ruft Daten ab, bis keine mehr übrig sind. Für jedes Datenelement führt die Stufe ihre Operation durch, übergibt dann das Ergebnis an einen Ausgabekanal und schließt schließlich den Kanal, wenn keine Daten mehr im Eingabekanal übrig sind. Das Schließen des Kanals ist wichtig, damit die Downstream-Stufe weiß, wann sie beenden muss

Erstellen Sie eine Zahlenfolge, verdoppeln Sie sie, filtern Sie dann niedrige Werte und geben Sie sie schließlich auf der Konsole aus.

func produce(num int) chan int {
    out := make(chan int)
    go func() {
        for i := 0; i < num; i++ {
            out <- rand.Intn(100)
        }
        close(out)
    }()
    return out
}

func double(input <-chan int) chan int {
    out := make(chan int)
    go func() {
        for value := range input {
            out <- value * 2
        }
        close(out)
    }()
    return out
}

func filterBelow10(input <-chan int) chan int {
    out := make(chan int)
    go func() {
        for value := range input {
            if value > 10 {
                out <- value
            }
        }
        close(out)
    }()
    return out
}

func print(input <-chan int) {
    for value := range input {
        fmt.Printf("value is %d\n", value)
    }
}

func main() {

    print(filterBelow10(double(produce(10))))

}
Nach dem Login kopieren

Es gibt offensichtlich eine besser lesbare Möglichkeit, main():
zu strukturieren

func main() {

    input := produce(10)
        doubled := double(input)
    filtered := filterBelow10(doubled)
    print(filtered)

}
Nach dem Login kopieren

Wählen Sie Ihren Stil nach Ihren eigenen Vorlieben.

Was würden Sie hier hinzufügen? Hinterlassen Sie unten Ihre Kommentare.

Danke!

Den Code für diesen Beitrag und alle Beiträge dieser Reihe finden Sie hier

Das obige ist der detaillierte Inhalt vonDas Pipeline-Muster in Go. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage