全。我正在用Go编写一个聊天客户端,作为我正在编写的一个库的概念验证。它需要接受用户输入,并在同一终端窗口中打印传入消息。请考虑以下内容。
user@debian ~ $ ./client
no session> 192.168.1.100
> Hello, there!
Hi!
> So, did you get that feature working yet?
Nope. I thought you were going to ask on StackOverflow.
>> Yeah, I'm aski如果另一条消息在我打字时到达,那么它应该会生成以下内容。
user@debian ~ $ ./client
no session> 192.168.1.100
> Hello, there!
Hi!
> So, did you get that feature working yet?
Nope. I thought you were going to ask on StackOverflow.
Or did you want me to?
>> Yeah, I'm aski有没有办法在Go中做到这一点?
谢谢:)
发布于 2012-11-21 08:09:15
如果您曾经使用过这样的控制台应用程序,那么它可能使用了ncurses这样的库来实现这一点。你不会想自己去编程,因为它太复杂了。
对于Go,我推荐termbox-go。它很容易上手,并且有一个结构良好的api。
发布于 2012-11-21 07:51:10
这可能不是正确的方法(不是控制台开发人员),但不久前我在Go中制作了一个终端动画,我在我的Android手机上运行。这是通过清除屏幕、绘图、清除等来完成的。
我不记得我用什么来清除屏幕,但例如,我刚刚尝试了这个,fmt.Print("\033[2J"),它似乎工作了。这里需要注意的是。对用于清除屏幕的转义序列的支持可能因平台甚至终端仿真器而异。
但考虑到这一点,您可以维护一个缓冲区,当接收到消息时,清除屏幕,然后更改并重新打印缓冲区,以确定客户端应该是什么样子。
https://stackoverflow.com/questions/13483585
复制相似问题