簡體   English   中英

如何在我的 CLI 中獲取用戶選擇的標志

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM