iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >使用 go 中的 urfave/cli 将 `BoolFlags` 合并为一个
  • 285
分享到

使用 go 中的 urfave/cli 将 `BoolFlags` 合并为一个

go语言 2024-02-09 19:02:55 285人浏览 安东尼
摘要

PHP小编香蕉在这里向大家介绍一个使用Go语言中的urfave/cli库,将BoolFlags合并为一个的方法。urfave/cli是一个强大的命令行库,可以帮助我们创建优雅的命令行应

PHP小编香蕉在这里向大家介绍一个使用Go语言中的urfave/cli库,将BoolFlags合并为一个的方法。urfave/cli是一个强大的命令行库,可以帮助我们创建优雅的命令行应用程序。在命令行应用程序中,我们经常需要处理各种BoolFlags(布尔标志),它们用于表示某些开关或选项是否启用。但是当BoolFlags很多时,代码会变得冗长且难以维护。使用urfave/cli,我们可以轻松地将多个BoolFlags合并为一个,使代码更加简洁和易于理解。接下来,让我们一起来看看具体的实现方法。

问题内容

我有一个代码可以获取 -f/--foo-b/--bar 的参数。参数解析是通过 urfave/cli 包完成的,这是第二个最流行的 go 参数解析器。我可以像 go run 一样运行我的程序。 -f -b 但不像 go run 。 -fb 有没有办法让它与 go run 一起工作。 -fb 使用 urfave/cli? 如果不可能,什么 go 模块可以使之成为可能?

代码:

package main

import (
    "fmt"
    "log"
    "os"

    "GitHub.com/urfave/cli/v2"
)

func main() {
    var foo_count, bar_count bool

    app := &cli.app{
        flags: []cli.flag{
            &cli.boolflag{
                name:    "foo",
                usage:   "foo",
                aliases: []string{"f"},
                destination:   &foo_count,
            },
            &cli.boolflag{
                name:    "bar",
                usage:   "bar",
                aliases: []string{"b"},
                destination:   &bar_count,
            },
        },
        action: func(cctx *cli.context) error {
            fmt.println("foo_count", foo_count)
            fmt.println("bar_count", bar_count)
            return nil
        },
    }

    if err := app.run(os.args); err != nil {
        log.fatal(err)
    }
}

测试

$ go run . -f
foo_count true
bar_count false
$ go run . -b
foo_count false
bar_count true
$ go run . -bf
Incorrect Usage: flag provided but not defined: -bf

NAME:
   main - A new cli application

USAGE:
   main [global options] command [command options] [arguments...]

COMMANDS:
   help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --foo, -f   Foo (default: false)
   --bar, -b   Bar (default: false)
   --help, -h  show help
2023/03/25 15:54:00 flag provided but not defined: -bf
exit status 1

解决方法

这个问题在一个包示例中得到了具体解决。创建 cli 时添加 UseShortOptionHandling: true

https://github .com/urfave/cli/blob/main/docs/v2/examples/combining-short-options.md

来自文档: 这可以使用应用程序配置中的 UseShortOptionHandling bool 来完成,或者通过将其附加到命令配置来完成单个命令。

以上就是使用 go 中的 urfave/cli 将 `BoolFlags` 合并为一个的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: 使用 go 中的 urfave/cli 将 `BoolFlags` 合并为一个

本文链接: https://www.lsjlt.com/news/562742.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作