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

Corak Saluran Paip dalam Go

WBOY
WBOYasal
2024-07-29 21:18:201022semak imbas

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

}

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

func main() {

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

}

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!

Kenyataan:
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
Artikel sebelumnya:Buat API CRUD dengan GoArtikel seterusnya:Buat API CRUD dengan Go