在 Go 專案使用 CLI 進度條

做法

下載套件。

1
go get -u github.com/schollz/progressbar/v3

客製化進度條:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
func NewProgressBar(max int, step string, description string) *progressbar.ProgressBar {
theme := progressbar.Theme{
Saucer: "[green]=[reset]",
SaucerHead: "[green]>[reset]",
SaucerPadding: " ",
BarStart: "[",
BarEnd: "]",
}
options := []progressbar.Option{
progressbar.OptionEnableColorCodes(true),
progressbar.OptionFullWidth(),
progressbar.OptionSetDescription(fmt.Sprintf("[cyan][%s][reset] %s", step, description)),
progressbar.OptionSetPredictTime(false),
progressbar.OptionSetTheme(theme),
progressbar.OptionOnCompletion(func() {
_, _ = fmt.Fprintln(os.Stdout)
}),
}
return progressbar.NewOptions(max, options...)
}

使用 Add() 方法更新進度:

1
2
3
4
5
6
7
func main() {
bar := NewProgressBar(1000, "1/1", "Initialing...")
for i := 0; i < 1000; i++ {
bar.Add(1)
time.Sleep(5 * time.Millisecond)
}
}