Pengaturcaraan fungsional menggunakan paip dan goroutin untuk mengendalikan input dan output. Semasa memproses input, gunakan paip dan goroutin untuk memproses data penstriman secara selari. Apabila memproses output, gunakan paip untuk menghantar data dari satu fungsi ke fungsi yang lain. Dalam kes sebenar, saluran paip digunakan untuk menyambungkan fungsi pemprosesan dan fungsi output untuk mencapai pemprosesan input dan pemformatan output. Pendekatan ini menawarkan kelebihan berskala, konkurensi dan kebolehujian.
Mengendalikan input dan output dalam pengaturcaraan berfungsi Go
Pengaturcaraan fungsional memfokuskan pada penggunaan struktur data tidak berubah dan fungsi tulen untuk menulis logik. Pendekatan ini mempunyai faedah unik apabila mengendalikan input dan output.
Input Pemprosesan
Untuk memproses input, kita boleh menggunakan paip dan goroutin untuk memproses data penstriman secara selari. Sebagai contoh, kita boleh menggunakan kod berikut untuk menstrim baris teks yang dibaca daripada input standard ke dalam paip:
package main import ( "bufio" "fmt" "log" "os" ) func main() { lines := make(chan string) go func() { s := bufio.NewScanner(os.Stdin) for s.Scan() { lines <- s.Text() } close(lines) }() for line := range lines { fmt.Println(line) } }
Output Pemprosesan
Untuk output, kita boleh menggunakan paip untuk menghantar data dari satu fungsi ke fungsi yang lain . Sebagai contoh, kita boleh menggunakan kod berikut untuk menstrim beberapa rentetan ke output standard:
package main import ( "fmt" "log" ) func main() { lines := []string{"line1", "line2", "line3"} ch := make(chan string) go func() { for _, line := range lines { ch <- line } close(ch) }() for line := range ch { fmt.Println(line) } }
Contoh praktikal
Pertimbangkan contoh praktikal berikut: Kami mempunyai senarai yang mengandungi beberapa data. Kami mahu memproses data dalam senarai ini dan mengeluarkannya dalam format lain.
Menggunakan pengaturcaraan berfungsi, kita boleh memecahkan tugas ini kepada dua fungsi:
Kita boleh menyambungkan fungsi pemprosesan dan fungsi output menggunakan paip seperti yang ditunjukkan di bawah:
package main import ( "fmt" "log" ) func main() { lines := []string{"line1", "line2", "line3"} process := func(in <-chan string) <-chan string { out := make(chan string) go func() { for line := range in { out <- line + "-processed" } close(out) }() return out } output := func(in <-chan string) { for line := range in { fmt.Println(line) } } processed := process(lines) output(processed) }
Pendekatan ini memberikan faedah berikut:
Atas ialah kandungan terperinci Bagaimana untuk mengendalikan input dan output dalam pengaturcaraan berfungsi golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!