2

フラグを使用する他のパッケージを使用しながら、pflag を使用するにはどうすればよいですか?

これらのパッケージのいくつかは、flag パッケージのフラグを (たとえば、init 関数で) 定義し、flag.Parse() を呼び出す必要があります。

pflag パッケージを使用してフラグを定義するには、pflag.Parse() を呼び出す必要があります。

引数が混在していると、flag.Parse() と pflag.Parse() の呼び出しの 1 つが失敗します。

フラグを使用する他のパッケージで pflag を使用するにはどうすればよいですか?

4

3 に答える 3

4

これには2つのアプローチが見つかりました。

  1. pflags AddGoFlags() を持つもの。すなわち。

    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 に答える