无法将命令行分配给Go中的变量和参数

无法将命令行分配给Go中的变量和参数,go,command-line-interface,Go,Command Line Interface,使用的软件包:gopkg.in/urfave/cli.v1 代码段: app.Action = func(c *cli.Context) error { author := "anonymous" filename := "Image" if c.NArg() > 0 { author = c.Args().Get(1) filename = c.Args().Get(2) } } 我调用了一个函数,该函数在if语句之后使

使用的软件包:
gopkg.in/urfave/cli.v1

代码段:

app.Action = func(c *cli.Context) error {

    author := "anonymous"
    filename := "Image"
    if c.NArg() > 0 {
        author = c.Args().Get(1)
        filename = c.Args().Get(2)
    }
}
我调用了一个函数,该函数在if语句之后使用author和filename,但结果是author和filename具有它们的初始值(匿名和图像),而不是使用上述函数的命令行参数中的值

我是一个新来的人,查阅了软件包的文档,但找不到解决方案

如果我这样做:

author:=c.Args().Get(1)
filename:=c.Args().Get(2)
然后函数返回空字符串,并将其初始化为两个变量

我发出的命令是这样的:

terminal -q "hi" -a "Eklavya" -f "Eklavya"

您的代码有点不完整,但您可能已经定义了标志
q
a
f

c、 Args().Get()仅适用于未作为标志传递的Args。e、 g.电话

terminal hi Eklavya Eklavya
已定义参数0、1和2

要访问标志,必须使用其他FUNC。以下更改有效:

app.Action = func(c *cli.Context) error {

    author := "anonymous"
    filename := "Image"
    if len(c.GlobalFlagNames()) > 0 {
        author = c.String("a")
        filename = c.String("f")
    }
}