Cara Mengesan Kunci Khas (Enter, Backspace) dalam Input STDIN Golang
Apabila membaca input pengguna daripada stdin dalam Go, gelagat lalai adalah untuk menangkap semua aksara sehingga aksara akhir baris (cth., kekunci "masuk") ditekan. Untuk mengesan kekunci khas seperti "masuk" atau "ruang belakang" dan melakukan tindakan tertentu, kami perlu mencari cara untuk mentafsir perwakilan bait kunci ini dalam program kami.
Dalam kod asal yang disediakan, yang menangkap pengguna input dalam gelung:
for { input += string(b) }
Pembolehubah b ialah tatasusunan bait bersaiz 1 yang digunakan untuk membaca bait tunggal pada satu masa daripada stdin. Untuk mengenal pasti kunci khas, kita perlu memahami cara kekunci ini diwakili sebagai bait.
Sebagai contoh, kekunci "enter" menjana nilai bait sebanyak 10 (suapan baris), manakala kekunci "backspace" menjana nilai bait 127 (dalam sistem POSIX), atau 8 (ruang belakang).
Untuk mengesan kunci khas ini, kita boleh menggunakan yang lebih maju pendekatan:
package main import ( "fmt" "os" "term" ) func main() { err := term.Init() if err != nil { panic(err) } defer term.Close() for { ev := term.PollEvent() switch ev.Type { case term.EventKey: // Check for special keys switch ev.Key { case term.KeyEnter: fmt.Println("Enter pressed") case term.KeyBackspace: fmt.Println("Backspace pressed") } } } }
Dalam kod yang dikemas kini ini:
Dengan menggunakan pendekatan ini, anda kini boleh mengendalikan kekunci khas seperti "masuk" atau "ruang belakang" dan melakukan tindakan tersuai seperti yang diperlukan.
Atas ialah kandungan terperinci Bagaimana untuk Mengesan Kekunci Enter dan Backspace dalam Input STDIN Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!