golang:如何将pflag与其他使用flag的包一起使用?

时间:2015-12-02 21:59:14

标签: go viper-go flag-go pflag-go

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

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

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

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

如何将pflag与其他使用flag的包一起使用?

3 个答案:

答案 0 :(得分:3)

我找到了两种方法。

  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()
    
  3. 将值设置为标志值。

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

    你很高兴...

答案 1 :(得分:0)

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

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

pflag提供了一个名为AddGoFlagSet()的便捷功能来实现这一目标。

答案 2 :(得分:-1)

  

如何将pflag与其他使用flag的包一起使用?

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