我使用https://github.com/spf13/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")
fmt.Println(token)
}
但是当我这样运行应用程序时,它不会打印出来:
.\consoleplay.exe --token "hello.token"
如何打印标志的值。
答案 0 :(得分:0)
您无法在init()
函数中打印token的值,因为init()
函数是在首次调用该程序包时在运行时执行的。该值尚未分配。
因此,您必须全局声明变量,并在Run
命令的rootCmd
方法中使用它。
var token string
var rootCmd = &cobra.Command{
Use: "consoleplay",
Run: func(cmd *cobra.Command, args []string) {
fmt.Println(token)
},
}
func init() {
rootCmd.Flags().StringVarP(&token, "token", "t", "", "usage")
}