是否可以覆盖标志值?

我想知道是否可以在运行时覆盖标志值。

例子:

  • main.go 导入一个包 pkg.go。

  • pkg.go 使用一个标志(“-myFlag”),但存储标志的标识符没有被导出。

是否可以更改 pkg.go 从 main.go 接收的“-myFlag”的标志值?

用例:我正在使用一个使用glog来记录错误的库。glog 使用标志来定义写入日志的位置,默认情况下它将日志写入文件。我使用的环境不允许写入文件系统,也不允许在应用程序初始化时设置标志,因此我需要以某种方式覆盖/设置 glog 标志,以便我可以将其设置为将错误写入 stderr。


MYYA
浏览 197回答 1
1回答

神不在的星期二

你可以这样做flag.Set("flagname", "whatever")。或者,如果您想对该选项执行其他操作(检查默认值,查看它是否已更改等),您可以使用f := flag.Lookup("flagname")然后f.Value.Set("whatever")(以及其他方法)。在任何一种情况下,flag.FlagSet如果您需要在flag.CommandLine集合以外的东西上使用它,都有匹配的方法。Playground example
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go