首页 > 解决方案 > 如何从终端复制一行

问题描述

有没有办法在 Go 中复制当前的终端字符行?我想用程序输出替换用户在控制台中输入的内容。然后我想将他输入的内容粘贴到下一行,这样他就可以继续输入的内容。输出看起来会更干净。否则程序输出介于他输入的内容之间。

下面是两个并发函数的一部分:

for {
    // print username before typing field in consoles
    fmt.Print(username, ": ")
    // read the message from the user
    message, _ := reader.ReadString('\n')

以上允许用户发送消息,其余代码被省略,因为它不是问题的一部分

下面从其他来源接收消息

// set message display format
    msgDisplay := "%s : %s"
    // populate the message to the display format
    msgDisplay = fmt.Sprintf(msgDisplay, t.Username, t.Message)
    // print message on console
    fmt.Println(msgDisplay)

您可以推断这类似于聊天,假设用户正在输入发送消息部分,并且有来自其他来源的传入消息。例如:用户“Jojo”正在输入“fabrication”,来自“Renu”的传入消息是“2019”在“Jojo”完成输入之前到达的,控制台应该看起来

Renu:2019
Jojo:制作

当前行为

乔乔:fabrRenu:2019

Jojo 正在输入消息,而传入的消息在视觉上与输入打断了。如果 Jojo 继续打字,它会看起来

乔乔:fabrRenu:2019阳离子

程序正常工作,目的地收到“制造”,但视觉上不正确

标签: go

解决方案


推荐阅读