go - Golang 标志接受任意参数
问题描述
我有一个包装另一个可执行文件的程序。我需要提供一些接口,以便调用我的程序,用户可以提供任意参数,这些参数将传递给它包装的可执行文件。例如:
当用户调用
$ myprogram --call -additional -a -b -c 1 -d=true
我希望我的程序调用
wrapped_executable -a -b -c 1 -d=true
使用 flags 包实现此目的的最佳方法是什么?
解决方案
从标志文档文档中:
标志解析在第一个非标志参数(“-”是非标志参数)之前或终止符“--”之后停止。
因此,在调用外部 exe 时,请替换-additional
为--
:
$ myprogram --call -- -a -b -c 1 -d=true
然后在之后获取参数--
:
flag.Parse()
args := flag.Args() // []string{"-a", "-b", "-c", "1", "-d=true"}
推荐阅读
- java - 在spring应用程序中使用jackson进行序列化时面临的问题
- c# - Entity Framework DB First 不更新外键列
- ionic-framework - 无法在android上模拟离子项目
- c++ - int* a = nullptr; 有什么区别?和 int *a = nullptr?
- python-3.x - sequence item 0: expected str instance, list found
- mailgun - mailgun-js: how to get stats on a tag?
- node.js - Gem 加载错误是:Node.js (V8) 运行时在此系统上不可用
- laravel - Laravel Image validation not working when I try to upload ai or psd file
- php - Why does my PHP MYSQL Query not work with SUM?
- java - 如何将自定义消息附加到异常(在不能抛出异常的覆盖方法中)?