Lire instantanément un caractère à partir d'une entrée standard dans Go
Dans Go, la lecture à partir d'une entrée standard nécessite généralement d'appuyer sur Entrée pour recevoir l'entrée. Cependant, si vous souhaitez que votre application réponde immédiatement à toute pression sur une touche, comme avec Console.ReadKey() en C#, la solution suivante peut y parvenir.
Le code fourni désactive la mise en mémoire tampon d'entrée à l'aide des commandes stty, garantissant que les frappes sont traitées instantanément. L'écho des caractères est également supprimé pour empêcher la saisie affichée.
Voici le code :
package main import ( "fmt" "os" "os/exec" ) func main() { // Disable input buffering exec.Command("stty", "-F", "/dev/tty", "cbreak", "min", "1").Run() // Suppress input echoing 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)+")") } }
Lorsque ce code est en cours d'exécution, appuyer sur n'importe quelle touche renvoie immédiatement la représentation en octets du caractère et le caractère correspondant à la console. .
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!