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

Go 使用github.com/spf13/cobra获取参数值,go,command-line,Go,Command Line,我使用这个包来解释进程的命令行参数,我很难理解参数值是如何确定的 我有一个工作程序(如下所示),它使用内部变量来更新参数值: OptPort := 8088 rootCmd := &cobra.Command{ Use: "server", Short: "Root command short version", Long: "Root command long version", } startCmd := &cobra.Command{

我使用这个包来解释进程的命令行参数,我很难理解参数值是如何确定的

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

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()
我得到的结果如下:

args:
port: 8088

我意识到我可以通过询问端口变量来获得端口值,但我原以为这些值也会在args变量中。args变量是否为空,因为我做错了什么?如果args变量预期为空,那么args变量的用途是什么?

args变量用于传递到特定
cobra
谓词中的额外参数。例如,如果希望
server
命令上的
start
动词(例如)需要一个特定的配置文件,您可以像这样简单地传入该文件

服务器启动-p 8080 config.yml

“config.yml”
放在
参数[0]