Golang CLI 眼镜蛇计数标志

3 command-line-interface go go-cobra

我想定义一个 CLI 标志来计算它出现的次数。

例如,让我们--verbose用简写来定义标志-v

# verbose value should be 0
> myCmd

# verbose value should be 1
> myCmd -v

# verbose value should be 2
> myCmd -vv

# ...
Run Code Online (Sandbox Code Playgroud)

有没有内置的方法来实现它?

Bil*_*ill 6

来自https://github.com/spf13/cobra:“标志功能由 pflag 库提供”

pflag 库中有多个用于计数标志的选项,如下所示: https: //godoc.org/github.com/spf13/pflag#Count

可以提供一个跨越许多文件的长示例,但其关键是使用类似这样的东西(其中“run”是本例中的 cobra 命令):

runCmd.Flags().CountP("verbose", "v", "counted verbosity")
Run Code Online (Sandbox Code Playgroud)

要稍后在 runCmd 的 Run 函数中检索该值,请使用以下命令:

verbosity, _ := cmd.Flags().GetCount("verbose")
Run Code Online (Sandbox Code Playgroud)

变量详细程度将是一个保存重复次数的 int。

在该示例中,我使用了 pflag 的 CountP 版本,它允许提供长标志名称和短标志名称(我认为这就是您希望找到的)。