亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go:為什么在使用緩沖區打印到 std.out 時 ANSI exscape 代碼不起作用?

Go:為什么在使用緩沖區打印到 std.out 時 ANSI exscape 代碼不起作用?

Go
蠱毒傳說 2022-12-26 10:20:34
所以我試圖讓項目打印到命令行,我想快速完成,所以我使用這種方法打印到 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 循環中包含一個刷新修復了這個問題。



查看完整回答
反對 回復 2022-12-26
  • 1 回答
  • 0 關注
  • 86 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號