Rumah > pembangunan bahagian belakang > Golang > Corak Saluran Paip dalam Go

Corak Saluran Paip dalam Go

WBOY
Lepaskan: 2024-07-29 21:18:20
asal
1057 orang telah melayarinya

The Pipeline Pattern in Go

Corak saluran paip ialah cara yang berkesan untuk memproses data melalui peringkat secara serentak. Setiap peringkat melakukan operasi yang berbeza pada data kemudian meneruskan ke peringkat seterusnya.

Menggunakan saluran untuk menghantar data bersama-sama, corak saluran paip boleh meningkatkan prestasi dalam banyak kes.

Ideanya sangat mudah, setiap peringkat bergerak melalui saluran, menarik data sehingga tiada yang tinggal. Bagi setiap item data, peringkat melakukan operasinya kemudian menghantar hasilnya ke saluran keluaran dan akhirnya menutup saluran apabila tiada lagi data tertinggal dalam saluran input. Penutupan saluran adalah penting supaya peringkat hiliran tahu bila untuk ditamatkan

Buat urutan nombor, gandakannya, kemudian tapis nilai rendah, dan akhir sekali cetaknya untuk konsol.

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

}
Salin selepas log masuk

Jelas ada cara yang lebih mudah dibaca untuk menstruktur main():

func main() {

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

}
Salin selepas log masuk

Pilih gaya anda berdasarkan pilihan anda sendiri.

Apa yang akan anda tambahkan di sini? Tinggalkan komen anda di bawah.

Terima kasih!

Kod untuk siaran ini dan semua siaran dalam siri ini boleh didapati di sini

Atas ialah kandungan terperinci Corak Saluran Paip dalam Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan