Go 无法获取标志值

Go 无法获取标志值,go,go-cobra,Go,Go Cobra,我用这个库创建了一个小型Go应用程序 我创建了一个新标志,-t或-token,当我传递这个参数时,我希望应用程序打印它 这就是我所做的: func init() { fmt.Println("[*] Inside init()") var token string rootCmd.PersistentFlags().StringVarP(&token, "token", "t", "", "Service account Token (JWT) to insert

我用这个库创建了一个小型Go应用程序

我创建了一个新标志,-t或-token,当我传递这个参数时,我希望应用程序打印它

这就是我所做的:

func init() {
    fmt.Println("[*] Inside init()")
    var token string
    rootCmd.PersistentFlags().StringVarP(&token, "token", "t", "", "Service account Token (JWT) to insert")
    fmt.Println(token)
}  
但当我像这样运行应用程序时,它不会打印它:

.\consoleplay.exe --token "hello.token"  

如何打印标志的值

当第一次调用包时,init函数在运行时执行,因此无法在init函数中打印token的值。尚未指定该值

因此,您必须全局声明变量,并在rootCmd命令的Run方法中使用它

变量标记字符串 var rootCmd=&cobra.Command{ 用法:consoleplay, 运行:funccmd*cobra.Command,args[]字符串{ 打印标记 }, } 函数初始化{ rootCmd.Flags.StringVarP&token、token、t、用法 }
在初始化时没有进行标志解析。它不会在编译时执行。编译时不会执行任何操作。它在运行时执行,但在main执行之前执行。