我想知道是否有可能在运行时覆盖标志值。
例:
是否可以更改pkg.go从main.go接收的“ -myFlag”标志值?
用例:我正在使用使用glog记录错误的库。glog使用标志定义在何处写入日志,默认情况下,它将日志写入文件。我使用的环境不允许写入文件系统,也不允许在应用程序初始化时设置标志,因此我需要以某种方式覆盖/设置glog标志,以便可以将其设置为将错误写入stderr。
你可以做flag.Set("flagname", "whatever")。
或者,如果您想对该选项做其他事情(检查默认值,看看它是否已被更改,等等),可以使用f := flag.Lookup("flagname")然后使用f.Value.Set("whatever")(以及其他方法)。
在任何一种情况下,flag.FlagSet如果您需要在flag.CommandLine集合之外的东西上使用匹配方法。