如何获取用户在我的 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时要删除的内容,有没有办法获取我的用户选择的标志值?


回首忆惘然
浏览 104回答 1
1回答

慕桂英546537

这个解决方案有非常糟糕的设计...你不知道这些标志的顺序。问题我假设你正在使用.因此,当您阅读文档时,您将找不到如何评估标志的任何部分。因此,有时它被称为未定义的行为,它可能会起作用,但如果将来它可能会改变。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 .........
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go