Maison >développement back-end >Golang >Comment puis-je lire instantanément des caractères uniques à partir d'une entrée standard dans Go ?

Comment puis-je lire instantanément des caractères uniques à partir d'une entrée standard dans Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-13 14:17:14875parcourir

How Can I Read Single Characters from Standard Input Instantly in Go?

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!

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