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
DDDoriginal
2024-12-15 08:10:12925parcourir

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()

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)+")")
}

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!

Déclaration:
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