M_M*_*M_M 5 go viper-go go-cobra
我正在维护一些使用 Go (golang)、Viper和Cobra编写的代码。
一方面,它有:
rootCmd.PersistentFlags().String("cfg", "", "A description")
Run Code Online (Sandbox Code Playgroud)
然后在下一行它有
rootCmd.PersistentFlags().StringP("output", "o", ".", "Another description")
Run Code Online (Sandbox Code Playgroud)
在这种情况下String和StringP在这种情况下有什么区别?
查看各种教程中的示例用法,似乎有各种方法的版本P和非P版本,例如StringVarP和StringVar。
这些版本之间有什么区别?的意义P何在?
有没有一种方法可以判断给定的方法是否具有对应物P或非P对应物?
搜索引擎倾向于将我带到 cobra 或 viper 教程页面,这些页面使用这些方法而不解释P或非P对应。
我发现一些材料pflags表明它可能与参数是否具有短(一个字母)形式有关。会是这样吗?
编辑后说明:收到这个问题的答案后,spf13/pflag上面提到的 golang 框架似乎确实在幕后使用了它。然而,在使用 cobra 或 viper 时是否应该查看 pflags 文档并不清楚。
由于这是一个问答网站,我已经恢复了一项编辑,该编辑删除了我在寻找此答案时会输入的许多关键字,因为我觉得其他人在寻找相同的信息时会以这种方式得到更好的服务。