2

如何在使用 pflag 的同时使用其他使用 flag 的包?

其中一些包为 flag 包定义了标志(例如在它们的 init 函数中) - 并且需要调用 flag.Parse()。

使用 pflag 包定义标志,需要调用 pflag.Parse()。

当参数混合时,对 flag.Parse() 和 pflag.Parse() 的调用之一将失败。

如何将 pflag 与其他使用标志的软件包一起使用?

4

3 回答 3

4

我为此找到了两种方法。

  1. 一个带有 pflags AddGoFlags()。IE。

    f := pflag.NewFlagSet("goFlags", pflag.ExitOnError)
    f.AddGoFlagSet(flag.CommandLine)
    f.Parse([]string{
       "--v=10", // Your go flags that will be pass to other programs.
    })
    flag.Parse()
    
  2. 您可以使用的另一种方法。这不是书本上的,但我见过一些人用过这个.. 通过另一个 pflag 获取标志值。

    pflag.StringVar(&f, "f", "**", "***")
    pflag.Parse()
    

将该值设置为标志值。

    flag.Set("v", f)
    flag.Parse()

你很高兴去..

于 2015-12-25T09:46:19.043 回答
0

我收到了 pflag 维护者的回复。

解决方案是将所有为 flag 定义的标志“导入”到 pflag 中,然后单独调用 pflag.Parse()。

pflag 提供了一个名为AddGoFlagSet()的便捷函数来完成此操作。

于 2015-12-03T18:43:07.253 回答
-1

如何将 pflag 与其他使用标志的软件包一起使用?

你不能。它是或。plfag 是 flag 的替代品,而不是插件。

于 2015-12-03T08:09:36.033 回答