Categorygithub.com/Zcentury/progress
repositorypackage
1.2.0
Repository: https://github.com/zcentury/progress.git
Documentation: pkg.go.dev

# Packages

No description provided by the author

# README

progress

一个方便快捷的进度计算工具

API

函数

func NewProgress(name string, percentage float64) *Progress

创建一个进度

  • name:任务名称
  • percentage:进度占比(0为自动分配),一个任务下的子任务占比不能超过100

方法

func (*Progress)AddSubTask(subTask *Progress) error

添加子任务

func (*Progress)SetProgress(value float64)

设置进度

func (*Progress)CalculateTotalProgress()

计算进度

func (*Progress)DisplayProgress()

打印可视化图表

+-----------------+-------------------+--------------------+
| 主任务[0]35.00% | 子任务1[30]0.00%  |                    |
+                 +-------------------+--------------------+
|                 | 子任务2[70]50.00% | 子任务2-1[0]50.00% |
+                 +                   +--------------------+
|                 |                   | 子任务2-2[0]50.00% |
+                 +                   +--------------------+
|                 |                   | 子任务2-3[0]50.00% |
+-----------------+-------------------+--------------------+

演示

func main() {
	// 创建主任务
	mainTask := progress.NewProgress("主任务", 0)

	// 创建子任务1并添加到主任务中
	subTask1 := progress.NewProgress("子任务1", 30)
	if err := mainTask.AddSubTask(subTask1); err != nil {
		fmt.Println("错误:", err)
		return
	}
	subTask1.SetProgress(0)

	// 创建子任务2并添加到主任务中
	subTask2 := progress.NewProgress("子任务2", 70)
	if err := mainTask.AddSubTask(subTask2); err != nil {
		fmt.Println("错误:", err)
		return
	}

	// 创建子任务2-1并添加到子任务2中
	subTask21 := progress.NewProgress("子任务2-1", 0)
	if err := subTask2.AddSubTask(subTask21); err != nil {
		fmt.Println("错误:", err)
		return
	}
	subTask21.SetProgress(50)

	// 创建子任务2-2并添加到子任务2中
	subTask22 := progress.NewProgress("子任务2-2", 0)
	if err := subTask2.AddSubTask(subTask22); err != nil {
		fmt.Println("错误:", err)
		return
	}
	subTask22.SetProgress(50)

	// 创建子任务2-3并添加到子任务2中
	subTask23 := progress.NewProgress("子任务2-3", 0)
	if err := subTask2.AddSubTask(subTask23); err != nil {
		fmt.Println("错误:", err)
		return
	}
	subTask23.SetProgress(50)

	// 打印可视化表格
	mainTask.DisplayProgress()

	// 计算总进度
	totalProgress, err := mainTask.CalculateTotalProgress()
	if err != nil {
		fmt.Println("错误:", err)
		return
	}
	fmt.Printf("总进度: %.2f%%\n", totalProgress)
}

图示

此图示非图表输出函数结果,而是为了方便大家理解计算

                    +-------35--------+
                    |      主任务      |
                    +-----------------+
                              |
        +---------------------+---------------------+
        |                                           |
+-------0---------+                         +-------50--------+
|  子任务1-占比30%  |                         |  子任务2-占比70%  |
+-----------------+                         +-----------------+
                                                     |
                            +------------------------+----------------------+
                            |                        |                      |
                    +-------50--------+     +--------50-------+     +-------50--------+
                    | 子任务2-1-占比33% |     | 子任务2-2-占比33% |     | 子任务2-3-占比33% |
                    +-----------------+     +-----------------+     +-----------------+