有没有办法清除stdin的最后一行并在以后还原它?

我正在尝试使用终端界面创建消息传递客户端。 我遇到的问题是我想在用户可能输入标准输入时将消息打印到标准输出。 当我这样做时,键入stdin的用户输入会被消息打断。 有什么方法可以清除stdin的最后一行,然后打印到stdout,然后恢复stdin的最后一行,以便用户可以完成他们的消息?</ p>

当前,我使用< code> bufio.Reader.ReadString('
')</ code>
,然后使用正常的 fmt.Println </ code>和 fmt.Printf </ code>函数打印到stdout </ p>

当前情况的示例:</ p>

 #用户正在键入消息
嘿,Stan ho
#来自其他用户的消息进入了
#它是:“ Hey Bart”
#终端的最后一行现在是:
Hey Stan hoHey bart
</ code> </ pre>

我要清除的是“ Hey Stan” ho”,然后打印收到的消息,然后将“ Hey Stan ho”放回去</ p>
</ div>

展开原文

原文

I'm trying to create a messaging client with a terminal interface. The problem I'm having is I want to print messages to stdout while the user might be typing into stdin. When I do this the user input typed into stdin get disrupted by the message. Is there any way to clear the last line of stdin, then print to stdout and then restore the last line of stdin so the user can finish their message?

Currently I read from stdin with bufio.Reader.ReadString(' ') and I print to stdout with the normal fmt.Println and fmt.Printf functions

An example of the current situation:

# user is typing message
Hey Stan ho
# message from other user comes in
# it is: "Hey Bart"
# last line in terminal is now:
Hey Stan hoHey bart

What I want is to clear the "Hey Stan ho" then print the incoming message and then put the "Hey Stan ho" back

dongzha0813
dongzha0813 我认为登录到用于与用户交互的同一基础设备(终端)在概念上是错误的。并且,如果您绝对需要这样做,那么最好是首先与用户进行交互然后再开始记录的最佳实践。
一年多之前 回复
duanqun9618
duanqun9618 您可能需要高级终端库,例如termbox-go。在github.com/avelino/awesome-go#advanced-console-uis上查看所有可用的库列表
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问