最近在做一个需求,功能很简单,就是开发一个轻量级客户端,将一个指定文件中的内容通过TCP发送到服务器。由于该文件特别大,有可能到达 100G 的数量级,因此处理起来会比较慢,为了给用户提供比较友好的展示界面,因此,在其中加入了进度条显示功能。
在这里,说一下我在实现该进度条功能时的一些思路。
成果演示
先看一下最终的成品效果展示:
![dda02559f5931d6d673ca4d3189fb497.gif](https://i-blog.csdnimg.cn/blog_migrate/44f9e0840e336dce91864822b43883f5.gif)
该进度条一共分三部分组成,第一部分是主体进度条,第二部分是百分比,第三部分是当前完成的数据和总数据的一个动态展示。
源码分析
由于是要在终端上打印出进度条的效果,因此,主要还是利用fmt.Printf函数中的格式控制符。有了这个基础,我们就可以先设计一下结构,如下所示:
type Bar struct { percent int64 //百分比 cur int64 //当前进度位置 total int64 //总进度 rate string //进度条 graph string //显示符号}
其中,百分比没什么说的,cur和tot