golang : How can I use pflag with other packages that use flag?

标签 go viper-go flag-go

如何在使用 pflag 的同时还使用其他使用 flag 的包?

其中一些包为 flag 包定义了标志(例如在它们的 init 函数中) - 并需要调用 flag.Parse() 。

使用 pflag 包定义标志,需要调用 pflag.Parse()。

当参数混合时,对 flag.Parse() 和 pflag.Parse() 的调用之一将失败。

如何将 pflag 与其他使用 flag 的包一起使用?

最佳答案

我找到了两种方法。

  1. 带有 pflags AddGoFlags() 的一个。 IE。

    f := pflag.NewFlagSet("goFlags", pflag.ExitOnError)
    f.AddGoFlagSet(flag.CommandLine)
    f.Parse([]string{
       "--v=10", // Your go flags that will be pass to other programs.
    })
    flag.Parse()
    
  2. 您可以使用的另一种方法。这不是书上写的,但我见过一些人用过这个。 通过另一个pflag获取标志值。

    pflag.StringVar(&f, "f", "**", "***")
    pflag.Parse()
    

将该值设置为标志值。

    flag.Set("v", f)
    flag.Parse()

你就可以开始了..

关于golang : How can I use pflag with other packages that use flag?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34053881/

相关文章:

google-app-engine - 没有路由器 Gorilla Mux 的 Google Cloud Go 处理程序?

go - Windows 上的 InfluxDB 安装问题

go - 替换 viper map 键而不替换整个 map

go - Cobra + Viper Golang 如何测试子命令?

go - 从单独的命令/进程共享属性

go - 在 GoLang 中定义独立的标志集

go - Golang解决hackerrank的“对角线差异”问题

pointers - 为什么 fmt.Println 在打印指针时不一致?