登录
首页 >  Golang >  Go问答

无需换行即可将 stdin 击键发送到通道

来源:Golang技术栈

时间:2023-04-08 16:10:27 214浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《无需换行即可将 stdin 击键发送到通道》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

问题内容

我想在对标准输入进行每次击键后直接将用户的击键发送到通道。

我尝试了下面的代码,但这并没有给出预期的结果,因为该reader.ReadByte()方法会阻塞,直到输入换行符。

func chars() 

感谢您就如何让每个用户输入字符立即进入频道而不需要换行符提供任何建议。

正确答案

默认情况下,标准输入是行缓冲的。这意味着它不会向您产生任何输入,直到遇到换行符。这不是 Go 特定的东西。

让它以非缓冲方式运行是高度特定于平台的。正如 Rami 所建议的,ncurses 是一种方法。另一种选择是轻得多的go- termbox包。

如果您想手动完成所有操作(至少在 Linux 上),您可以考虑为termios编写 C 绑定或直接在 Go 中执行系统调用。

我不知道像 Windows 这样的平台如何处理这个问题。您可以深入研究 ncurses 或 termbox 的源代码,看看他们是如何做到的。

今天关于《无需换行即可将 stdin 击键发送到通道》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>