[英]How can I get the Flag chosen by the user in my CLI
我已經指定了一些標志,如下所示:
deleteCmd.Flags().StringVarP(&option, "wallet", "w", "", "Specify the wallet to be deleted")
deleteCmd.Flags().StringVarP(&option, "holding", "o", "", "Specify the holding to be deleted")
deleteCmd.Flags().StringVarP(&option, "ticker", "t", "", "Specify the ticker to be deleted")
deleteCmd.Flags().StringVarP(&option, "tag", "g", "", "Specify the tag to be deleted")
一旦我將使用這些來知道在使用我的 API 時要刪除什么,有沒有辦法獲得我的用戶選擇的標志值?
該解決方案的設計非常糟糕……您不知道評估這些標志的順序。
我假設您正在使用cobra
。 因此,當您閱讀文檔時,您將找不到任何有關如何評估標志的部分。 所以有時它被稱為未定義的行為,它可能會起作用,但如果將來它可能會改變
讓我們分析一下您的示例:
deleteCmd.Flags().StringVarP(&option, "wallet", "w", "", "Specify the wallet to be deleted")
deleteCmd.Flags().StringVarP(&option, "holding", "o", "", "Specify the holding to be deleted")
deleteCmd.Flags().StringVarP(&option, "ticker", "t", "", "Specify the ticker to be deleted")
deleteCmd.Flags().StringVarP(&option, "tag", "g", "", "Specify the tag to be deleted")
您有以下標志: wallet, holding, ticker, tag
。 我們可以假設順序是您將其放入代碼中的方式。 讓我們說潛在的行為:
用戶放置ticker
標志。 所有標志的默認值為空。 所以option
變量有一個空值,它來自tag
標志。
您應該為每個標志使用單獨的變量。 並且您應該實現您的邏輯以覆蓋確定已放置哪個標志的部分。
deleteCmd.Flags().StringVarP(&wallet, "wallet", "w", "", "Specify the wallet to be deleted")
deleteCmd.Flags().StringVarP(&holding, "holding", "o", "", "Specify the holding to be deleted")
deleteCmd.Flags().StringVarP(&ticker, "ticker", "t", "", "Specify the ticker to be deleted")
deleteCmd.Flags().StringVarP(&tag, "tag", "g", "", "Specify the tag to be deleted")
if wallet != "" {
option = wallet
selected = "wallet"
} else if holding != "" {
option = holding
selected = "holding"
} else ...
...
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.