使用的套餐: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"
答案 0 :(得分:1)
您的代码有点不完整,但您可能已经定义了标记q
,a
和f
。
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")
}
}