当前位置: 首页 > 面试题库 >

在GoLang中定义独立的标志集

裴金鑫
2023-03-14
问题内容

Go文档(http://golang.org/pkg/flag/)表示:

FlagSet类型允许人们定义独立的标志集,例如在命令行界面中实现子命令。

我需要此功能,但我不知道如何说服国旗pkg做到这一点。当我定义两个FlagSet时,如果命令行中有用于第二个标志的标志,则解析其中一个标志将给我错误和警告。例:

f1 := flag.NewFlagSet("f1", flag.ContinueOnError)
apply := f1.Bool("apply", false, "")
silent := f1.Bool("silent", false, "")
if err := f1.Parse(os.Args[1:]); err == nil {
    fmt.Println(*apply, *silent)
}
f2 := flag.NewFlagSet("f2", flag.ContinueOnError)
reset := f2.Bool("reset", false, "")
if err := f2.Parse(os.Args[1:]); err == nil {
    fmt.Println(*reset)
}

如果尝试执行cmd -applyOR,我会收到各种各样的警告cmd -reset。我想将这些FlagSet分开,因为我只想为-silent工作-apply

我想念什么?


问题答案:

您首先要在子命令之间进行区分,然后Parse在右侧进行调用FlagSet

f1 := flag.NewFlagSet("f1", flag.ContinueOnError)
silent := f1.Bool("silent", false, "")
f2 := flag.NewFlagSet("f2", flag.ContinueOnError)
loud := f2.Bool("loud", false, "")

switch os.Args[1] {
  case "apply":
    if err := f1.Parse(os.Args[2:]); err == nil {
      fmt.Println("apply", *silent)
    }
  case "reset":
    if err := f2.Parse(os.Args[2:]); err == nil {
      fmt.Println("reset", *loud)
    }
}

http://play.golang.org/p/eaEEx_EReX



 类似资料:
  • 问题内容: 事实证明,以下示例在使用mysql 5.x时有效,但是在使用oracle 10g数据库时无效。 有没有一种方法可以定义独立于数据库技术的唯一标识符字段? 我已经在hibernate状态下对此进行了测试,并且只有在使用Oracle时才会发生以下异常: 问题答案: 我已经研究过使用,它的确是更好的选择。它允许JPA实现选择最适合您所使用的数据存储系统的任何东西。

  • “模板”在E立方中是一个非常重要的概念,简单来说,“模板”就是表单的样式 + 各种规则。        在各企事业单位中,信息的载体主要就是各种表单,这些表单的样式和要求在不同行业、不同单位之间的差别是很大的,在这种情况下,即使有很多宣称是行业通用的软件,也还是不能完全满足各个单位的实际需要,也就是说你要么只能使用其中的部分功能,要么就要将就软件的要求来改变自己的表单格式,我想这两种选择都不是你的

  • 问题内容: 是否可以使用Java邮件在IMAP邮件上设置自定义标志,而不会覆盖现有标志?例如,我需要在已处理的邮件上设置一个“已处理”标志,而不必将其状态更改为“已查看/已删除”,或者邮件客户端不会干扰此“已处理”标志。 然后,我需要找到所有不具有“已处理”标志的邮件并对其进行处理,然后将它们也标记为“已处理”。 谢谢! 问题答案: 并非所有的IMAP服务器都将支持这些“用户标志”,但大多数都将支

  • 你能告诉我如何使第二个的内容对齐到底部吗?不设置的情况下,这两个盒子的大小是一样的? null null

  • 问题内容: 我在RestFul服务中使用了golang gorm,但是,我现在怀疑这很简单,但找不到任何示例或特定文档,这对我来说并不明确。 假设我有表用户和语言,任何用户都可以有多种语言,任何语言都可以有许多用户,在这种情况下,对于关系数据库建模理论,我们必须创建一个表users_languages,并检查gorm,我发现必须使用多对多关系。 现在,我已经有了定义用户和语言表的结构,可以这样说:

  • 问题内容: 我想将Mongoose模型分离到一个单独的文件中。我试图这样做: 然后,我尝试使用如下模型: 在单独的模块中引用模型是否合理? 问题答案: 基本方法看起来很合理。 作为一种选择,您可以考虑集成模型和控制器功能的“提供商”模块。这样,您可以让app.js实例化提供程序,然后可以执行所有控制器功能。app.js只需指定要实现的具有相应控制器功能的路由即可。 为了进一步整理,您还可以考虑使用