前言

golang的并发确实简单一些,(不过想要写好也不容易)最近用golang写一个目录扫描工具来练手。写到后面发现需要显示内容和进度(比如进度条),否则工具体验比较差(可能让用户以为程序卡死)。但不想换行输出,这样信息冗杂,界面难看。最好能动态显示,记下踩坑过程,有这篇文章。

解决的几种方法

回车符

代码如下

这里的\r是精华,\r为回车符,将光标回到一旧行的开头;(即光标目前所在的行为旧行),相当于删除当前行在写新的一行,效果就好像一直在变一样。

但一个问题是如果并发一个打印函数就会出现如下结果

还是不过美观,修改一下就是在打印test时先输出\r,原理一样

还是不对,不过在修改一下,用空格代替后面遗留的进度条

呕吼,完成。

完整并发代码

怎么用就看大家自己发挥了。注意这种方法不仅能够实现进度条,其他的动态效果都能实现。

progressbar

使用第三方包

导入后使用就很简单了

不过使用发现并发打印还是存在同样问题,还在看到文档存在Clear()方法,在打印信息前

即可。看下我的实际使用效果

最后

项目地址

https://github.com/srat1999/s-dirscan