Input Aksara Tidak Menyekat dalam Go
Membaca aksara daripada input standard tanpa menekan Enter boleh dicapai menggunakan perpustakaan standard Go dan melaksanakan operasi arahan sistem.
Untuk pengguna Windows, mod input bukan kanonik mungkin tersedia menggunakan syscall pakej. Walau bagaimanapun, pendekatan ini bergantung pada platform dan mungkin bukan pembangunan merentas platform yang sesuai.
Penyelesaian Berasaskan UNIX
Penyelesaian yang disediakan berfungsi untuk sistem berasaskan UNIX dan melumpuhkan penimbalan input dan bergema aksara:
package main import ( "fmt" "os" "os/exec" ) func main() { // disable input buffering exec.Command("stty", "-F", "/dev/tty", "cbreak", "min", "1").Run() // do not display entered characters on the screen exec.Command("stty", "-F", "/dev/tty", "-echo").Run() var b []byte = make([]byte, 1) for { os.Stdin.Read(b) fmt.Println("I got the byte", b, "("+string(b)+")") } }
Program ini akan berulang kali membaca aksara daripada input standard sehingga ia ditamatkan. Mod cbreak melumpuhkan penimbalan baris, manakala bendera -echo menghalang aksara yang dimasukkan daripada dipaparkan pada skrin.
Nota:
Penyelesaian ini menganggap bahawa anda sedang menggunakan emulator terminal yang menyokong mod input bukan kanonik. Jika terminal anda tidak menyokongnya, anda mungkin perlu melaraskan kod tersebut dengan sewajarnya.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencapai Input Aksara Tidak Menyekat dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!