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>
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!