Mengesan Kunci Khas dalam Go Semasa Membaca daripada stdin
Dalam Go, membaca input pengguna daripada stdin ialah tugas biasa untuk banyak aplikasi. Walau bagaimanapun, mengesan kekunci khas, seperti Enter, Backspace dan kekunci F, boleh mencabar. Artikel ini bertujuan untuk memberikan penjelasan dan penyelesaian terperinci untuk masalah ini.
Program Go yang dibentangkan menggunakan exec.Command untuk menetapkan tetapan terminal untuk input tidak menyekat dan tidak bergema. Ia kemudian memasuki gelung tak terhingga dan membaca satu bait pada satu masa menggunakan make([]bait, 1).
Untuk mengesan kunci khas, kita perlu menentukan perwakilan bait asasnya. Malangnya, pendekatan naif mencetak nilai bait tidak akan memberikan maklumat yang bermakna. Sebaliknya, kami boleh menggunakan pustaka termbox-go, yang menawarkan cara yang lebih komprehensif untuk mengendalikan acara papan kekunci.
Seperti yang ditunjukkan dalam kod sampel, termbox-go menyediakan fungsi PollEvent yang mengembalikan peristiwa yang dikaitkan dengan ketukan kekunci. Setiap acara mengandungi medan Jenis dan Kekunci, di mana Kekunci mewakili kekunci yang ditekan. Ini membolehkan kami menyemak kekunci tertentu, seperti Enter, Backspace dan kekunci F.
Kod sampel termasuk gelung pendengar tekan kekunci yang mengendalikan pelbagai kekunci, termasuk kekunci fungsi, kekunci anak panah dan kekunci khas seperti Backspace dan Enter. Apabila menekan kekunci, ia mencetak nama kunci atau nilai ASCII yang sepadan.
Sebagai alternatif, jika menggunakan termbox-go tidak boleh dilaksanakan, kita boleh bergantung pada pakej bufio untuk mengendalikan input aksara tunggal. Dengan menggunakan NewReaderSize dengan saiz penimbal 1, kita boleh membaca satu aksara pada satu masa. Pendekatan ini juga boleh digunakan untuk mengesan Enter dengan menyemak aksara 'n'.
Kesimpulannya, pengesanan kekunci khas dalam Go semasa membaca daripada stdin memerlukan pemahaman yang lebih mendalam tentang tetapan terminal dan pengendalian acara papan kekunci. Penyelesaian yang disediakan, menggunakan termbox-go atau bufio, menawarkan kaedah yang berkesan dan boleh disesuaikan untuk mengendalikan tugas ini.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesan Kekunci Khas (Enter, Backspace, F-keys) dalam Go Semasa Membaca daripada stdin?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!