我想知道是否可以在运行时覆盖标志值。例子:main.go 导入一个包 pkg.go。pkg.go 使用一个标志(“-myFlag”),但存储标志的标识符没有被导出。是否可以更改 pkg.go 从 main.go 接收的“-myFlag”的标志值?用例:我正在使用一个使用glog来记录错误的库。glog 使用标志来定义写入日志的位置,默认情况下它将日志写入文件。我使用的环境不允许写入文件系统,也不允许在应用程序初始化时设置标志,因此我需要以某种方式覆盖/设置 glog 标志,以便我可以将其设置为将错误写入 stderr。
1 回答
神不在的星期二
TA贡献1963条经验 获得超6个赞
你可以这样做flag.Set("flagname", "whatever")
。
或者,如果您想对该选项执行其他操作(检查默认值,查看它是否已更改等),您可以使用f := flag.Lookup("flagname")
然后f.Value.Set("whatever")
(以及其他方法)。
在任何一种情况下,flag.FlagSet
如果您需要在flag.CommandLine
集合以外的东西上使用它,都有匹配的方法。
- 1 回答
- 0 关注
- 193 浏览
添加回答
举报
0/150
提交
取消