我想知道是否可以在运行时覆盖标志值。
示例:
是否可以更改" -myFlag"的标志值?哪个pkg.go从main.go收到?
用例:我使用的库使用glog来记录错误。 glog使用flags来定义写日志的位置,默认情况下,它会将日志写入文件。我使用的环境不允许写入文件系统,也不允许在应用程序初始化时设置标志,因此我需要以某种方式覆盖/设置glog标志,以便我可以将其设置为将错误写入stderr。
答案 0 :(得分:4)
你可以flag.Set("flagname", "whatever")
。
或者,如果您想对该选项执行其他操作(请检查默认设置,查看它是否已更改等),您可以使用f := flag.Lookup("flagname")
然后使用f.Value.Set("whatever")
(以及作为其他方法)。
在任何一种情况下,如果您需要flag.FlagSet
设置以外的其他方法,则会有匹配的flag.CommandLine
方法。