1 回答

TA貢獻1848條經驗 獲得超10個贊
這個解決方案有非常糟糕的設計...你不知道這些標志的順序。
問題
我假設你正在使用.因此,當您閱讀文檔時,您將找不到如何評估標志的任何部分。因此,有時它被稱為未定義的行為,它可能會起作用,但如果將來它可能會改變。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
用戶放置標志。所有標志的默認值均為空。因此,該變量有一個空值,該值來自標志。tickeroptiontag
解決方案
應為每個標志使用分隔變量。您應該實現您的邏輯來覆蓋該部分,以確定放置了哪個標志。
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 ...
...
...
- 1 回答
- 0 關注
- 134 瀏覽
添加回答
舉報