首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用github.com/spf13/cobra获取参数值

使用github.com/spf13/cobra获取参数值
EN

Stack Overflow用户
提问于 2016-08-03 05:41:17
回答 1查看 2.2K关注 0票数 1

我正在使用github.com/spf13/cobra包来解释进程的命令行参数,我很难理解参数值是如何确定的。

我有一个工作程序(如下所示),它使用通过参数值更新的内部变量:

代码语言:javascript
复制
OptPort := 8088

rootCmd := &cobra.Command{
    Use:   "server",
    Short: "Root command short version",
    Long:  "Root command long version",
}

startCmd := &cobra.Command{
    Use:   "start",
    Short: "Start command short version",
    Long:  "Start command long version",
    Run: func(cmd *cobra.Command, args []string) {
        fmt.Println("args: " + strings.Join(args, " "))
        fmt.Println("port: " + OptPort)
    },
}
startCmd.Flags().IntVarP(&OptPort, "port", "p", OptPort, "Port to listen to")

rootCmd.AddCommand(startCmd)

rootCmd.Execute()

我得到的输出如下:

代码语言:javascript
复制
args:
port: 8088

我意识到我可以通过查询port变量来获得端口值,但我认为这些值也应该在args变量中。args变量是不是因为我做错了什么而为空?如果args变量预期为空,则args变量的用途是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-04 23:48:49

args变量用于传递给特定cobra谓词的额外参数。例如,如果您希望server命令上的start谓词(例如)需要特定的配置文件,则可以简单地将其传递到like中

server start -p 8080 config.yml

并将"config.yml"放在args[0]中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38730950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档