直接向通道输入击键,无需换行
在 Go 中,标准输入(stdin)默认是行缓冲的。这意味着击键不会立即发送到通道;相反,它们会一直保留,直到输入换行符。为了克服这个限制,您可以通过以下方法读取击键并将其发送到通道,而不需要换行符:
<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>
但是,stdin 行缓冲不是 Go 特有的,而是平台范围内的默认值。对于非缓冲输入,需要特定于平台的解决方案。一种选择是使用 ncurses 或 go-termbox 软件包。或者,您可以使用 termios 或 Go 系统调用(适用于 Linux)实现手动输入处理。 Windows 实现需要探索 ncurses 或 termbox 源代码。
以上是在 Go 中如何在没有换行符的情况下直接将击键读取到通道中?的详细内容。更多信息请关注PHP中文网其他相关文章!