Go:命令行标志

use*_*985 1 go

我知道你可以指定命令行标志并对它们运行你的二进制文件,如下所示:

./binary -output=html -type=doc
Run Code Online (Sandbox Code Playgroud)

但是,我正在研究这个Go包的实现:https://github.com/jteeuwen/go-bindata

我想知道作者如何能够让用户运行这样的命令

go-bindata /data 
Run Code Online (Sandbox Code Playgroud)

代替

./go-bindata -target=/data
Run Code Online (Sandbox Code Playgroud)

如果我错过任何东西,请感谢一些帮助!

Not*_*fer 6

诀窍是使用flag.Args()简单地说就是标志后面的非标志参数.您可以获取整个列表,也可以获取特定的arg flag.Arg(i).请参阅http://golang.org/pkg/flag/#Args

从您发布的程序的来源:

// Create input configurations.
c.Input = make([]bindata.InputConfig, flag.NArg())
for i := range c.Input {
    c.Input[i] = parseInput(flag.Arg(i))
}
Run Code Online (Sandbox Code Playgroud)