为了账号安全,请及时绑定邮箱和手机立即绑定

如何获取用户在我的 CLI 中选择的标志

如何获取用户在我的 CLI 中选择的标志

Go
回首忆惘然 2022-08-01 16:34:46
我已经指定了一些标志,如下所示: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时要删除的内容,有没有办法获取我的用户选择的标志值?
查看完整描述

1 回答

?
慕桂英546537

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 ...

...

...


查看完整回答
反对 回复 2022-08-01
  • 1 回答
  • 0 关注
  • 103 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信