使用 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) 编写的代码,Viper and Cobra。
在一行中,它有:
rootCmd.PersistentFlags().String("cfg", "", "A description")
然后在下一行有
rootCmd.PersistentFlags().StringP("output", "o", ".", "Another description")
在这种情况下,String
和 StringP
有什么区别?
查看各种教程中的示例用法,似乎有P
和非P
版本的各种方法,例如StringVarP
和StringVar
。
这些版本有什么区别? P
的意义是什么?
有什么方法可以判断给定方法是否具有 P
或非 P
对应方法?
搜索引擎倾向于将我带到 cobra 或 viper 教程页面,这些页面使用这些方法而不解释 P
或非 P
对应方法。
我在 pflags
上发现了一些 material,这表明它可能与参数是否具有短(单字母)形式有关。难道是这个?
Post-edit note:收到这个问题的答案后,似乎 spf13/pflag
确实被上述 golang 框架在幕后使用。但是,目前还不清楚在使用 cobra 或 viper 时是否应该查看 pflags 文档。
由于这是一个问答网站,我已经恢复了一个编辑,删除了我在寻找这个答案时输入的许多关键字,因为我觉得其他人寻找相同的信息会以这种方式得到更好的服务。
P
后缀表示除了全名之外还接受单个字母标志名称的函数,如 pflag 文档的 usage 部分所述:
The pflag package also defines some new functions that are not in
flag, that give one-letter shorthands for flags. You can use these by
appending 'P' to the name of any function that defines a flag.
回答您的个别问题:
- 有什么区别:
P
函数有一个额外的参数:单字母名称。此短标志可与单个 -
. 一起使用
- 哪些方法有
P
对应方法:所有方法,如 pflag reference 中所示
至于为什么这被记录在 pflag 而不是 viper 或 cobra,这是因为两者 viper and cobra 使用 pflag 库。
我正在维护一些使用 Go (golang) 编写的代码,Viper and Cobra。
在一行中,它有:
rootCmd.PersistentFlags().String("cfg", "", "A description")
然后在下一行有
rootCmd.PersistentFlags().StringP("output", "o", ".", "Another description")
在这种情况下,String
和 StringP
有什么区别?
查看各种教程中的示例用法,似乎有P
和非P
版本的各种方法,例如StringVarP
和StringVar
。
这些版本有什么区别? P
的意义是什么?
有什么方法可以判断给定方法是否具有 P
或非 P
对应方法?
搜索引擎倾向于将我带到 cobra 或 viper 教程页面,这些页面使用这些方法而不解释 P
或非 P
对应方法。
我在 pflags
上发现了一些 material,这表明它可能与参数是否具有短(单字母)形式有关。难道是这个?
Post-edit note:收到这个问题的答案后,似乎 spf13/pflag
确实被上述 golang 框架在幕后使用。但是,目前还不清楚在使用 cobra 或 viper 时是否应该查看 pflags 文档。
由于这是一个问答网站,我已经恢复了一个编辑,删除了我在寻找这个答案时输入的许多关键字,因为我觉得其他人寻找相同的信息会以这种方式得到更好的服务。
P
后缀表示除了全名之外还接受单个字母标志名称的函数,如 pflag 文档的 usage 部分所述:
The pflag package also defines some new functions that are not in flag, that give one-letter shorthands for flags. You can use these by appending 'P' to the name of any function that defines a flag.
回答您的个别问题:
- 有什么区别:
P
函数有一个额外的参数:单字母名称。此短标志可与单个-
. 一起使用
- 哪些方法有
P
对应方法:所有方法,如 pflag reference 中所示
至于为什么这被记录在 pflag 而不是 viper 或 cobra,这是因为两者 viper and cobra 使用 pflag 库。