Maison > développement back-end > Golang > Comment puis-je lire les frappes directement dans un canal sans nouvelle ligne dans Go ?

Comment puis-je lire les frappes directement dans un canal sans nouvelle ligne dans Go ?

DDD
Libérer: 2024-10-30 07:44:02
original
825 Les gens l'ont consulté

How Can I Read Keystrokes Directly into a Channel Without a Newline in Go?

Saisissez les frappes directement sur le canal sans nouvelle ligne

Dans Go, l'entrée standard (stdin) est mise en mémoire tampon de ligne par défaut. Cela implique que les frappes au clavier ne sont pas immédiatement envoyées à un canal ; au lieu de cela, ils sont conservés jusqu'à ce qu'un caractère de nouvelle ligne soit saisi. Pour surmonter cette limitation, voici comment lire les frappes au clavier et les envoyer à un canal sans avoir besoin d'une nouvelle ligne :

<code class="go">func chars() <-chan byte {
    ch := make(chan byte)
    reader := bufio.NewReader(os.Stdin)
    go func() {
        for {
            char, err := reader.ReadByte()
            if err != nil {
                log.Fatal(err)
            }
            ch <- char
        }
    }()
    return ch
}</code>
Copier après la connexion

Cependant, la mise en mémoire tampon des lignes stdin n'est pas spécifique à Go mais plutôt une valeur par défaut à l'échelle de la plate-forme. . Pour les entrées sans tampon, des solutions spécifiques à la plate-forme sont requises. Une option consiste à utiliser les packages ncurses ou go-termbox. Alternativement, vous pouvez implémenter la gestion manuelle des entrées avec termios ou les appels système Go (pour Linux). La mise en œuvre de Windows nécessite l'exploration du code source de ncurses ou de termbox.

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