无法在Go

时间:2018-02-16 07:22:56

标签: 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语句之后调用一个使用author和filename的函数,但结果是作者和文件名有初始值(匿名和Image),而不是命令行参数中使用上述函数的函数。< / p>

我很新,去查看软件包的文档,找不到解决方案。

如果我这样做:

author:=c.Args().Get(1)
filename:=c.Args().Get(2)

然后该函数返回空字符串,并将它们初始化为两个变量

我给出的命令是这样的:

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

1 个答案:

答案 0 :(得分:1)

您的代码有点不完整,但您可能已经定义了标记qaf

c.Args()。Get()仅适用于未作为标志传递的args。例如电话

terminal hi Eklavya Eklavya

定义了args 0,1和2.

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

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

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