Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menstrim Ketukan Kekunci ke Saluran tanpa Keperluan Baris Baharu?

Bagaimana untuk Menstrim Ketukan Kekunci ke Saluran tanpa Keperluan Baris Baharu?

Linda Hamilton
Linda Hamiltonasal
2024-10-31 05:34:30670semak imbas

How to Stream Keystrokes to a Channel without a Newline Requirement?

Penstriman Ketukan Kekunci Input ke Saluran tanpa Keperluan Talian Baharu

Ketukan kekunci yang dimasukkan ke dalam input standard (stdin) biasanya ditimbal, bermakna ia hanya dihantar ke saluran apabila aksara baris baharu dimasukkan. Walau bagaimanapun, dalam situasi tertentu, adalah wajar untuk menghantar setiap ketukan kekunci terus ke saluran tanpa menunggu baris baharu.

Pendekatan Awal dan Kelemahannya

Kod awal yang disediakan dalam soalan, bertujuan untuk menghantar ketukan kekunci ke saluran, menggunakan pembaca bufio.NewReader(os.Stdin) dengan pembaca.ReadByte(). Kaedah ini menyekat sehingga aksara baris baharu dimasukkan, tidak memberikan hasil penghantaran ketukan kekunci segera yang diingini.

Memahami Input Penimbalan

Stdin lazimnya ditimbalkan talian secara lalai. Ini bermakna input tidak tersedia dengan segera kepada program sehingga baris baharu dimasukkan. Tingkah laku ini bukan unik untuk Go tetapi ialah tetapan khusus platform.

Penyelesaian Alternatif

  • Ncurses: Ncurses ialah perpustakaan yang menyediakan keupayaan pengendalian terminal bebas platform. Ia boleh digunakan untuk mengkonfigurasi stdin supaya berkelakuan dalam cara yang tidak penimbal.
  • Go-Termbox: Go-Termbox ialah pakej ringan yang turut mendayakan pengendalian input stdin bukan penimbal.
  • Pertimbangan Khusus Platform: Pengendalian Windows bagi buffered stdin mungkin berbeza daripada platform lain. Rujuk kod sumber ncurses atau kotak istilah untuk pelaksanaan khusus platform.

Atas ialah kandungan terperinci Bagaimana untuk Menstrim Ketukan Kekunci ke Saluran tanpa Keperluan Baris Baharu?. 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