首页 >后端开发 >Golang >如何将击键流式传输到通道而不需要换行?

如何将击键流式传输到通道而不需要换行?

Linda Hamilton
Linda Hamilton原创
2024-10-31 05:34:30760浏览

How to Stream Keystrokes to a Channel without a Newline Requirement?

输入击键流式传输到没有换行要求的通道

输入到标准输入 (stdin) 的击键通常会被缓冲,这意味着它们只会被发送当输入换行符时到通道。然而,在某些情况下,可能需要将每个击键直接发送到通道而不等待换行符。

初始方法及其缺点

初始代码问题中提供的,旨在将击键发送到通道,使用 bufio.NewReader(os.Stdin) 阅读器和 reader.ReadByte()。此方法会阻塞,直到输入换行符,无法提供立即击键传输所需的结果。

了解缓冲输入

默认情况下,Stdin 通常是行缓冲的。这意味着在输入换行符之前,程序无法立即使用输入。此行为并非 Go 独有,而是特定于平台的设置。

替代解决方案

  • Ncurses: Ncurses 是一个库提供独立于平台的终端处理能力。它可用于将标准输入配置为以非缓冲方式运行。
  • Go-Termbox:Go-Termbox 是一个轻量级包,还支持非缓冲标准输入输入处理。
  • 低级编程:为 termios 编写 C 绑定或直接使用 Go 系统调用可以允许手动控制 stdin 缓冲,但这种方法是高度特定于平台的,可能需要专业知识。
  • 特定于平台的注意事项: Windows 对缓冲 stdin 的处理可能与其他平台不同。请参阅 ncurses 或 termbox 的源代码以了解特定于平台的实现。

以上是如何将击键流式传输到通道而不需要换行?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn