所以我试图让项目打印到命令行,我想快速完成,所以我使用这种方法打印到 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 关注
- 70 浏览
添加回答
举报
0/150
提交
取消