使用的包: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:=c.Args().Get(1)
filename:=c.Args().Get(2)
然后该函数返回空白字符串并将它们初始化为两个变量
我给出的命令是这样的:
terminal -q "hi" -a "Eklavya" -f "Eklavya"
最佳答案
您的代码有点不完整,但您可能已经定义了标志 q
、a
和 f
。
c.Args().Get() 仅适用于未作为标志传递的参数。例如电话
terminal hi Eklavya Eklavya
定义了参数 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")
}
}
关于go - 无法将命令行分配给 Go 中的变量参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48821895/