Maison >développement back-end >Golang >Comment obtenir une saisie d'un seul caractère dans Go sans appuyer sur Entrée ?

Comment obtenir une saisie d'un seul caractère dans Go sans appuyer sur Entrée ?

DDD
DDDoriginal
2024-12-14 09:54:12783parcourir

How to Get Single Character Input in Go Without Pressing Enter?

Obtention de la saisie de caractères sans appuyer sur Entrée dans Go

Afin d'éviter d'appuyer sur la touche Entrée après avoir reçu la saisie de caractères dans Go, vous pouvez utiliser l'approche suivante.

  1. Désactiver la mise en mémoire tampon d'entrée :
    Exécutez la commande exec.Command("stty", "-F", "/dev/tty", "cbreak", "min", "1").Run() pour désactiver la mise en mémoire tampon des entrées. Cela permet au programme de lire un caractère immédiatement après avoir appuyé sur une touche.
  2. Supprimer l'écho
    Exécutez la commande exec.Command("stty", "-F", "/dev /tty", "-echo").Run() pour supprimer l'affichage des caractères saisis à l'écran.
  3. Lire un single Octet
    Utilisez os.Stdin.Read(b) pour lire un seul octet (caractère) à partir de l'entrée standard. Cela fonctionnera même si l'utilisateur n'appuie pas sur Entrée après avoir saisi un caractère.
  4. Exemple
    Le code suivant illustre comment mettre en œuvre cette approche :

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

Cette solution offre une fonctionnalité similaire à Console.ReadKey() en C# en vous permettant de lire un seul caractère sans attendre l'utilisateur pour appuyer sur Entrée.

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