golang:如何将 pflag 与其他使用标志的包一起使用?
golang: How can I use pflag with other packages that use flag?
如何在使用 pflag 的同时使用其他使用 flag 的包?
其中一些包为 flag 包定义了标志(例如在它们的 init 函数中)- 并且需要调用 flag.Parse()。
使用 pflag 包定义标志,需要调用 pflag.Parse()。
当参数混合时,对 flag.Parse() 和 pflag.Parse() 的调用之一将失败。
如何将 pflag 与其他使用 flag 的软件包一起使用?
How does one use pflag with other packages that use flag?
你不能。它要么是要么。 plfag 是 flag 的直接替代品,而不是插件。
我收到了 pflag 维护者的回复。
解决方法是"import"将所有为flag定义的flags写入pflag,然后单独调用pflag.Parse()
pflag 提供了一个名为 AddGoFlagSet() 的便捷函数来完成此操作。
我找到了两种方法。
一个带有 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()
您可以使用另一种方法。这不是书上的,但我看到有人用过这个..
通过另一个 pflag 获取标志值。
pflag.StringVar(&f, "f", "**", "***")
pflag.Parse()
将该值设置为标志值。
flag.Set("v", f)
flag.Parse()
一切顺利..
如何在使用 pflag 的同时使用其他使用 flag 的包?
其中一些包为 flag 包定义了标志(例如在它们的 init 函数中)- 并且需要调用 flag.Parse()。
使用 pflag 包定义标志,需要调用 pflag.Parse()。
当参数混合时,对 flag.Parse() 和 pflag.Parse() 的调用之一将失败。
如何将 pflag 与其他使用 flag 的软件包一起使用?
How does one use pflag with other packages that use flag?
你不能。它要么是要么。 plfag 是 flag 的直接替代品,而不是插件。
我收到了 pflag 维护者的回复。
解决方法是"import"将所有为flag定义的flags写入pflag,然后单独调用pflag.Parse()
pflag 提供了一个名为 AddGoFlagSet() 的便捷函数来完成此操作。
我找到了两种方法。
一个带有 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()
您可以使用另一种方法。这不是书上的,但我看到有人用过这个.. 通过另一个 pflag 获取标志值。
pflag.StringVar(&f, "f", "**", "***") pflag.Parse()
将该值设置为标志值。
flag.Set("v", f)
flag.Parse()
一切顺利..