繁体   English   中英

使用 Go(golang)、cobra 和 viper 时,StringVar 与 StringVarP 或 String 与 StringP 有什么区别?

[英]What is the difference between StringVar vs StringVarP or String vs StringP when using Go (golang), cobra and viper?

我正在维护一些使用 Go (golang)、 ViperCobra编写的代码。

在一条线上,它具有:

rootCmd.PersistentFlags().String("cfg", "", "A description")

然后在下一行它有

rootCmd.PersistentFlags().StringP("output", "o", ".", "Another description")

在这种情况下, StringStringP有什么区别?

查看各种教程中的示例用法,似乎有各种方法的P和非P版本,例如StringVarPStringVar

这些版本有什么区别? P的意义是什么?

有没有办法可以判断给定方法是否具有P或非P对应物?

搜索引擎倾向于将我带到 cobra 或 viper 教程页面,它们使用这些方法而不解释P或非P对应物。

我在pflags上发现了一些材料,这表明它可能与参数是否具有短(一个字母)形式有关。 会是这样吗?

编辑后说明:收到此问题的答案后,似乎spf13/pflag确实被上述 golang 框架在后台使用。 但是,目前尚不清楚在使用 cobra 或 viper 时是否应该通过 pflags 文档查看 go。
由于这是一个问答网站,我已经恢复了一个编辑,该编辑删除了我在寻找这个答案时输入的许多关键字,因为我觉得其他寻找相同信息的人会以这种方式得到更好的服务。

P后缀表示 function 除了全名之外还接受单个字母标志名称,如 pflag 文档的使用部分所述:

pflag package 还定义了一些不在标志中的新函数,它们为标志提供了一个字母的简写。 您可以通过将“P”附加到任何定义标志的 function 的名称来使用它们。

要回答您的个人问题:

  • 有什么区别: P函数有一个额外的参数:单字母名称。 这个短标志可以与单个-一起使用。
  • 哪些方法具有P对应物:所有方法,如pflag 参考中所示

至于为什么这被记录在 pflag 而不是 viper 或 cobra 中,这是因为vipercobra都使用 pflag 库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM