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文档到电脑,方便收藏和打印~
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0