Go每日一库之164:uiprogress(终端进度条)

2023年 10月 14日 43.2k 0

今天给大家推荐的是在终端(terminal)下能够显示进度条的工具:uiprogress。先看下使用该包的效果图:

相信大家在linux或mac终端上都下载过东西,然后会出现下载的进度条。今天我们就给大家分析下实现原理并演示其效果。

安装

$ go get -v github.com/gosuri/uiprogress

实现原理分析

实现原理其实也很简单,本质上是通过计算机的换码符来实现的。这里使用的就是“清除当前行,将鼠标移动到行首,再重新输出进度”的原理。“清除当前行,将鼠标移动到行首”的换码符是:ESC[1AESC[2K。ESC[1A是代表将鼠标移动到第1行;ESC[2K是代表清除终端上的整行内容。二者组合就能实现上述效果。如下是一个简单的输出百分比的代码:

const ESC = 27

var clear = fmt.Sprintf("%c[%dA%c[2K", ESC, 1, ESC)

var Out = io.Writer(os.Stdout)

func main() {
for i:= 0; i

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论