Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 在cli中使用进度条_Go_Command Line_Progress Bar - Fatal编程技术网

Go 在cli中使用进度条

Go 在cli中使用进度条,go,command-line,progress-bar,Go,Command Line,Progress Bar,我有执行npm安装的代码,如下所示: cmd := exec.Command("npm", "install") 最后是 if err = cmd.Wait(); err != nil { logs.("Error running %s: %v\n", cp[1:], err) return err } 我想使用进度条,我发现了以下内容 但是既然我不能控制执行的时间(我不知道它什么时候结束),我怎么能使用它呢 更新 因为我们无法计算所需的时间(取决于网络等),所以我只想证明一

我有执行npm安装的代码,如下所示:

cmd := exec.Command("npm", "install")
最后是

if err = cmd.Wait(); err != nil {
    logs.("Error running %s: %v\n", cp[1:], err)
    return err
}
我想使用进度条,我发现了以下内容 但是既然我不能控制执行的时间(我不知道它什么时候结束),我怎么能使用它呢

更新

因为我们无法计算所需的时间(取决于网络等),所以我只想证明一些东西正在工作,
显示进程正在运行,因为用户等待了20秒,他认为什么都不起作用,怎么做?

非常简短的回答是:如果没有任何指示单位,就不能

稍微长一点的回答是:向用户提供反馈可以通过几种方式完成。如果您没有详细的进度信息(例如:10个步骤中有n个已经完成,或者10秒中有n个已经过去),则无法真正显示有意义的进度条

您可以向用户提供有关正在发生的事情的反馈。然而,npm已经做到了这一点,为什么不直接显示输出呢


如果您只关心显示进度条,而不管它的意义有多大,那么您可以做的就是猜测该过程将花费多少时间。只需计时一次,并以此作为参考。

你说的“我不知道什么时候结束”是什么意思?你显示的代码是this@old_mountain-我希望同时进度条会工作,等待之后它会完成…@old_mountain-同时(在npm安装过程中,这需要一些时间,用户在cli上打印一些内容之前不会看到任何内容…)你将如何向用户显示你没有的进度信息?@Adrian-我想向用户显示一些东西,因为他要花20秒才能看到一些东西,所以这不是经典的进度条,但它显示了一些正在运行的过程。猜测的缺点是:你最终会看到Windows质量的进度条,除了作为安慰剂,它们基本上是完全无用的。有没有一种方法可以仅仅显示一个进展,而不是像完成一样的真正步骤。只是为了展示一些东西(我们正在工作)@shopiaT当然可以,但这通常被称为“旋转器”或臭名昭著的“钟形玻璃”,你可能会从窗口知道。在终端上,有时会有一个旋转的破折号。也许你可以在这里找到一些灵感: