Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Mencapai Input Aksara Tidak Menyekat dalam Go?

Bagaimanakah Saya Boleh Mencapai Input Aksara Tidak Menyekat dalam Go?

DDD
Lepaskan: 2024-12-31 22:05:12
asal
969 orang telah melayarinya

How Can I Achieve Non-Blocking Character Input in Go?

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)+")")
    }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan