英文:
golang: How can I use pflag with other packages that use flag?
问题
如何在同时使用其他使用flag的包时使用pflag?
其中一些包在其init函数中为flag包定义标志,并要求调用flag.Parse()。
使用pflag包定义标志,需要调用pflag.Parse()。
当参数混合时,flag.Parse()和pflag.Parse()中的一个调用将失败。
如何在使用其他使用flag的包时使用pflag?
英文:
How does one use pflag while also using other packages that use flag?
Some of these packages define flags for the flag package (e.g. in their init functions) - and require flag.Parse() to be called.
Defining flags using the pflag package, require pflag.Parse() to be called.
One of the calls to flag.Parse() and pflag.Parse() will fail when arguments are mixed.
How does one use pflag with other packages that use flag?
答案1
得分: 4
我找到了两种方法。
-
第一种方法是使用
pflags
的AddGoFlags()
。例如:f := pflag.NewFlagSet("goFlags", pflag.ExitOnError) f.AddGoFlagSet(flag.CommandLine) f.Parse([]string{ "--v=10", // 你想传递给其他程序的 Go 标志 }) flag.Parse()
-
另一种方法是获取另一个
pflag
的标志值。pflag.StringVar(&f, "f", "**", "***") pflag.Parse()
将该值设置为标志值。
flag.Set("v", f)
flag.Parse()
然后你就可以继续了。
英文:
I have found two approach for this.
-
One with 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()
-
Another approach you can use. This is not by the book but i have seen some used this..
get the flag valu by another pflag.pflag.StringVar(&f, "f", "**", "***") pflag.Parse()
Set the value as flag value.
flag.Set("v", f)
flag.Parse()
and you are good to go..
答案2
得分: 0
我从 pflag 的维护者那里得到了一个回复。
解决方案是将所有在 flag 中定义的标志“导入”到 pflag 中,然后只调用 pflag.Parse()。
pflag 提供了一个方便的函数叫做 AddGoFlagSet() 来完成这个任务。
英文:
I got a response from a maintainer for pflag.
The solution is to "import" all flags defined for flag into pflag, and then make a call to pflag.Parse() alone.
pflag provides a convenience function called AddGoFlagSet() to accomplish this.
答案3
得分: -1
如何在使用 flag 的其他包中使用 pflag?
你不能这样做。只能选择其中一个。pflag 是 flag 的替代品,而不是附加组件。
英文:
> How does one use pflag with other packages that use flag?
You cannot. It is either or. plfag is a drop-in replacement for flag, not an addon.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论