我正在維護一些使用 Go (golang)、Viper和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表明它可能與參數是否具有短(一個字母)形式有關。會是這樣嗎?編輯后說明:收到此問題的答案后,spf13/pflag上述golang框架似乎確實在后臺使用了它。但是,在使用 cobra 或 viper 時是否應該查看 pflags 文檔并不清楚。由于這是一個問答網站,我已經恢復了一個編輯,該編輯刪除了我在尋找這個答案時輸入的許多關鍵字,因為我覺得其他尋找相同信息的人會以這種方式得到更好的服務。
1 回答

拉風的咖菲貓
TA貢獻1995條經驗 獲得超2個贊
P
后綴表示除全名外還接受單個字母標志名稱的函數,如 pflag 文檔的使用部分所述:
pflag 包還定義了一些不在 flag 中的新函數,它們為標志提供單字母簡寫。您可以通過將“P”附加到任何定義標志的函數的名稱來使用它們。
要回答您的個人問題:
有什么區別:
P
函數需要一個額外的參數:單字母名稱。這個短標志可以與單個-
.哪些方法有
P
對應物:所有方法,如pflag 參考中所示
至于為什么這被記錄在 pflag 而不是 viper 或 cobra 中,這是因為viper和cobra都使用 pflag 庫。
- 1 回答
- 0 關注
- 295 瀏覽
添加回答
舉報
0/150
提交
取消