【问题标题】:Not able to assign command line to variables arguments in Go无法将命令行分配给 Go 中的变量参数
【发布时间】:2018-02-16 07:22:56
【问题描述】:

使用的包: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"

【问题讨论】:

    标签: go command-line-interface


    【解决方案1】:

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

    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")
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-03-08
      • 2014-08-11
      • 2016-05-05
      • 2021-02-27
      • 2021-06-11
      • 2013-10-19
      • 1970-01-01
      • 1970-01-01
      • 2019-10-17
      相关资源
      最近更新 更多