Maison > développement back-end > Golang > Comment lire des caractères uniques à partir de l'entrée de la console dans Go sans appuyer sur Entrée ?

Comment lire des caractères uniques à partir de l'entrée de la console dans Go sans appuyer sur Entrée ?

DDD
Libérer: 2024-12-15 08:10:12
original
929 Les gens l'ont consulté

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

Lecture d'un caractère sans la touche Entrée dans Go

Problème

Lorsqu'un utilisateur interagit avec une application de ligne de commande, appuyer sur une touche l'exige souvent appuyer sur Entrée pour soumettre leur contribution. Cependant, certains scénarios nécessitent une reconnaissance immédiate des caractères sans la touche Entrée. Comment y parvenir dans Go pour les systèmes Windows ?

Solution

Pour les systèmes Windows, vous pouvez désactiver la mise en mémoire tampon des entrées et masquer les caractères saisis à l'écran en suivant les étapes suivantes :

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()
Copier après la connexion

Avec ces commandes en place, vous pouvez utiliser le code suivant pour lire les caractères sans appuyer sur Entrée :

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

Lorsque vous exécutez ce programme, il sera afficher un message invitant l'utilisateur à appuyer sur n'importe quelle touche pour quitter. Appuyer sur n'importe quelle touche déclenchera l'appel os.Stdin.Read(b), qui renverra le caractère appuyé et l'affichera à l'écran.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal