首页 > 解决方案 > Golang CLI 眼镜蛇计数标志

问题描述

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

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

# verbose value should be 0
> myCmd

# verbose value should be 1
> myCmd -v

# verbose value should be 2
> myCmd -vv

# ...

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

标签: gocommand-line-interfacego-cobra

解决方案


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

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

可以提供一个跨越许多文件的长示例,但关键是使用这样的东西(在这种情况下,“run”是 cobra 命令):

runCmd.Flags().CountP("verbose", "v", "counted verbosity")

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

verbosity, _ := cmd.Flags().GetCount("verbose")

可变详细程度将是一个包含重复次数的 int。

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


推荐阅读