所以我試圖讓項目打印到命令行,我想快速完成,所以我使用這種方法打印到 cmd,因為它比 fmt.print 更快:buf := bufio.NewWriter(os.Stdout)fmt.Fprint(buf, "text here")我已經運行了幾次測試,這是打印到屏幕的最快方法。但是有一個問題,我還想打印 ansi 轉義碼來移動光標,改變顏色等。這段代碼有效,它應該做的是將光標位置移動到 0,0 并且它確實fmt.Printf("\033[%d;%dH", 0, 0)但是,當我嘗試使用緩沖區來實現相同的目的時,它什么也不做start := fmt.Sprintf("\033[%d;%dH", 0, 0)buf := bufio.NewWriter(os.Stdout)fmt.Fprint(buf, start)我在這里做錯了什么?有沒有辦法使用緩沖區來實現這一點?非常感謝這是在 Windows 11 上使用 cmd 而不是 powershell 完成的
1 回答

POPMUISE
TA貢獻1765條經驗 獲得超5個贊
好吧,我打印了 1 行太多,這導致數據在返回 0,0 時沒有被覆蓋,我的印象是 x、y 是相對于視口的,所以數據滾動到屏幕之外。
不同的行為確實是由不刷新緩沖區引起的。因此,在我打印到屏幕的 for 循環中包含一個刷新修復了這個問題。
- 1 回答
- 0 關注
- 86 瀏覽
添加回答
舉報
0/150
提交
取消