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 关注
- 103 浏览
添加回答
举报