获取标志值失败

我使用https://github.com/spf13/cobra库创建了一个小型 Go 应用程序。

我创建了一个新标志-tor --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"

如何打印标志的值。


慕容3067478
浏览 120回答 1
1回答

守候你守候我

您无法在init()函数中打印令牌的值,因为该init()函数在第一次调用包时在运行时执行。该值尚未分配。因此,您必须全局声明该变量并在命令Run的方法中使用它rootCmd。var token stringvar rootCmd = &cobra.Command{    Use:    "consoleplay",    Run: func(cmd *cobra.Command, args []string) {        fmt.Println(token)    },}func init() {    rootCmd.Flags().StringVarP(&token, "token", "t", "", "usage")}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go