我想输出到标准输出并让输出“覆盖”以前的输出。
例如;如果我输出On 1/10
,我想要下一个输出On 2/10
覆盖On 1/10
。我怎样才能做到这一点?
stdout
是一个流(io.Writer
)。您无法修改已写入其中的内容。什么can更改的是该流在打印到终端时的表示方式。请注意,没有充分的理由假设这种情况。例如,用户可以随意将标准输出重定向到管道或文件。
所以正确的方法是首先检查:
- 如果标准输出要去终端
- 该终端覆盖行/屏幕的程序是什么
上述两者都不在这个问题的范围内,但我们假设终端是我们的设备。然后通常打印:
fmt.Printf("\rOn %d/10", i)
将覆盖终端中的前一行。\r
代表carriage return
,由许多终端实现为将光标移动到当前行的开头,从而提供“覆盖行”功能。
作为具有不同支持的“覆盖”的“其他”终端的示例,这里是一个示例操场 http://play.golang.org/p/b1LlRwxPdu.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)