首页 > 解决方案 > Golang 标志接受任意参数

问题描述

我有一个包装另一个可执行文件的程序。我需要提供一些接口,以便调用我的程序,用户可以提供任意参数,这些参数将传递给它包装的可执行文件。例如:

当用户调用

$ myprogram --call -additional -a -b -c 1 -d=true

我希望我的程序调用

wrapped_executable -a -b -c 1 -d=true

使用 flags 包实现此目的的最佳方法是什么?

标签: go

解决方案


标志文档文档中:

标志解析在第一个非标志参数(“-”是非标志参数)之前或终止符“--”之后停止。

因此,在调用外部 exe 时,请替换-additional--

$ myprogram --call --  -a -b -c 1 -d=true

然后在之后获取参数--

flag.Parse()
args := flag.Args() // []string{"-a", "-b", "-c", "1", "-d=true"}

推荐阅读