Pertanyaan Saluran IO vs pembaca / penulis


Karena Go memiliki saluran, saya bertanya-tanya mengapa perpustakaan standar tampaknya tidak dirancang untuk menggunakannya untuk IO juga.

Ada jenis pembaca dan penulis untuk itu tetapi apa masalahnya dengan menggunakan saluran?

Suatu fungsi dapat mengembalikan saluran dari irisan byte (dengan mengasumsikan single-byte, atau bahkan pengembalian bit-tunggal terlalu tidak efisien) dan mengambil saluran untuk permintaan pembatalan dan saluran untuk pelaporan kesalahan.

-The Go pemula penasaran.


5
2017-12-02 09:36


asal


Jawaban:


Saluran sangat cocok untuk berkomunikasi antara goroutines. Ketika sebuah program melakukan sesuatu yang sederhana, seperti misalnya membaca stdin, melakukan sesuatu dengan aliran dan mengeluarkan hasilnya ke stdout - kemudian menggunakan saluran adalah kinerja yang berlebihan, yang tidak perlu disakiti.

Selama perpustakaan standar tidak menyediakan di tempat tertentu sesuatu yang spesifik untuk goroutines berkomunikasi satu sama lain, tidak ada alasan yang baik untuk memodelkan operasi sederhana, seperti io.Reader atau io.Writer menggunakan saluran, masing-masing memiliki kumpulan metode berbasis saluran (API).

Selain itu, jika diperlukan, penerapan yang sederhana dapat dibungkus dalam saluran, sedangkan sebaliknya, untuk "membukanya" suatu implementasi saluran kembali ke primitifnya tidak mungkin. Juga, penulis Go jelas seperti explicitness, yang mengarah ke bottleneck kinerja yang tidak disembunyikan (dan mengejutkan).


9
2017-12-02 10:08