golang 终端中怎样只在一行中实时更新打印内容

平时在终端中安装软件,有些软件能在某个位置中实时更新打印进度,在golang的终端输出中,怎样实现?

比如我要在终端中打印一个进度:

fmt.Print("进度:")
fmt.Printf("%d%%",25)
fmt.Printf("%d%%",50)
fmt.Printf("%d%%",75)
fmt.Printf("%d%%",100)

这么使用的话效果是:

进度:25%50%75%100%

我想要的效果是在进度:后面实时更新打印数据,golang中怎样实现?

阅读 7.6k
2 个回答

这个是通过 printf("进度:%d%%\r", i) 实现的。试试看

一个任务的进度是由你自己来决定的。你可以 每间隔1秒打印一次进度。而这个进度你自己通过你的业务逻辑来算的。 比如
go func(){

for{
    fmt.Printf("进度%d",sub/total)
    time.sleep(1秒)
}

}()

//执行任务...执行完毕自然就退出了。

推荐问题