Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Membaca Aksara Tunggal daripada Input Konsol dalam Go Tanpa Menekan Enter?

Bagaimana untuk Membaca Aksara Tunggal daripada Input Konsol dalam Go Tanpa Menekan Enter?

DDD
DDDasal
2024-12-15 08:10:12925semak imbas

How to Read Single Characters from Console Input in Go Without Pressing Enter?

Membaca Aksara Tanpa Kunci Masuk dalam Go

Masalah

Apabila pengguna berinteraksi dengan aplikasi baris arahan, menekan kekunci selalunya memerlukannya untuk menekan Enter untuk menyerahkan input mereka. Walau bagaimanapun, sesetengah senario memerlukan pengecaman aksara segera tanpa kekunci Enter. Bagaimanakah ini boleh dicapai dalam sistem Go for Windows?

Penyelesaian

Untuk sistem Windows, anda boleh melumpuhkan penimbalan input dan menyembunyikan aksara yang dimasukkan daripada skrin menggunakan langkah berikut:

1. // disable input buffering
exec.Command("stty", "-F", "/dev/tty", "cbreak", "min", "1").Run()
2. // do not display entered characters on the screen
exec.Command("stty", "-F", "/dev/tty", "-echo").Run()

Dengan arahan ini disediakan, anda boleh menggunakan kod berikut untuk membaca aksara tanpa menekan Masukkan:

var b []byte = make([]byte, 1)
for {
    os.Stdin.Read(b)
    fmt.Println("I got the byte", b, "("+string(b)+")")
}

Apabila anda menjalankan program ini, ia akan memaparkan mesej yang menggesa pengguna untuk menekan sebarang kekunci untuk keluar. Menekan sebarang kekunci akan mencetuskan panggilan os.Stdin.Read(b), yang akan mengembalikan aksara yang ditekan dan memaparkannya pada skrin.

Atas ialah kandungan terperinci Bagaimana untuk Membaca Aksara Tunggal daripada Input Konsol dalam Go Tanpa Menekan Enter?. 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