无法获取标志值



我用 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"  

如何打印标志的值。

不能init()函数中打印 token 的值,因为首次调用包时,init()函数在运行时执行。尚未分配该值。

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

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")
}

相关内容

  • 没有找到相关文章

最新更新