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
Libérer: 2024-12-14 09:54:12
original
782 Les gens l'ont consulté

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)+")")
        }
    }
    Copier après la connexion

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!

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