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!