所有。我正在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中执行此操作?
谢谢:)
答案 0 :(得分:4)
如果您曾经使用过类似的控制台应用程序,它可能会使用像ncurses这样的库来执行此操作。您不希望自己编程,因为它非常复杂。
对于Go,我建议termbox-go。它很容易上手,结构良好api。
答案 1 :(得分:0)
这可能不是正确的方法(不是控制台开发人员)但不久前我在Go上运行了一个终端动画,我在Android手机上运行。通过清除屏幕,绘图,清除等来完成此任务
我不记得我曾用过什么来清除屏幕但是例如我刚试过这个,fmt.Print("\033[2J")
它似乎有效。这里谨慎。对于清除屏幕的转义序列的支持可能因平台甚至终端仿真器而异。
但考虑到这一点,您可以维护客户端应该是什么样的缓冲区,收到消息时,清除屏幕,然后更改并重新打印缓冲区。