我正在寫一個交互式應用程序,它接受循環中的用戶輸入並在後臺輸出響應。我的代碼的讀取器部分是這樣的:如何在Go中等待用戶輸入時打印到控制檯?
scanner := bufio.NewReader(os.Stdin)
for {
fmt.Print(":: ") // prompt for user to enter stuff
in,_:=scanner.ReadString('\n')
}
然而,當我在等待用戶輸入,我想打印我在網絡上,像這樣一些異步數據:
>> Some text
>> :: Hi I'm the user and I'm
現在一些背景數據到達:
>> Some text
>> This data was printed while user was inputting
>> :: Hi I'm the user and I'm
而現在用戶可以完成自己的輸入:
>> Some text
>> This data was printed while user was inputting
>> :: Hi I'm the user and I'm entering some text
>> ::
我在想,後臺例程將需要掃描文本stdin
,以某種方式擦除它,打印自己的數據,並恢復原始文本。我不知道如何掃描未通過輸入鍵輸入的文本,或者如何清除一行。我該如何解決它?
也許你可以用這些https://github.com/avelino/awesome-go#advanced-console-uis中的一個來做這樣的事情,特別是termbox或其上的一個包? – jcbwlkr
@jcbwlkr謝謝。我最終使用鏈接中的'termbox-go'。我不得不寫我自己的打印功能和管理光標位置等,但最終我得到了我想要的效果。 – hazrmard