无法将命令行分配给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")
}
}