【发布时间】:2020-10-23 13:54:55
【问题描述】:
如果我像这样在 Go 中创建一个循环:
package main
import (
"fmt"
"time"
)
func main() {
for i := 10; i >= 0; i-- {
fmt.Printf("Time out in %d seconds\r", i)
time.Sleep(1 * time.Second)
}
}
并在 Linux 或 macOS 终端中运行程序,我将看到在第一次迭代中正确打印的行 (Time out in 10 seconds) 但在下一次迭代中(在这种情况下是每隔一个),因为要打印的字符串是一个字符更短,我会将上次迭代的剩余部分视为最后一个额外的 s 字符 - Time out in 9 secondss、Time out in 8 secondss 等。
有没有一种简单的方法可以在打印下一行之前清除上一次迭代中的打印行?
【问题讨论】:
标签: go newline carriage-return