在命令行中的参数后解析Golang标志

基里尔:

我正在解析命令行参数。我使用以下代码:

var flagB = flag.Bool("b", false, "boolflag")

func main() {
    flag.Parse()

    fmt.Println(flag.NArg())
    fmt.Println("-b", *flagB)
}

当我像这样执行二进制文件时:

> test -b "random"

我得到了预期的输出,因为有一个参数,并且设置了标志:

1
-b true

但是,当我以其他方式执行二进制文件时:

> test "random" -b

我得到这个:

2
-b false

现在,该标志不再被识别为标志,而是另一个参数。

为什么会这样呢?是否有定义是标志先出现,然后是参数?我一直认为传递和解析参数的“ GNU方式”是:二进制文件后的第一位保留用于强制参数。之后,您可以放置​​可选的参数和标志。

肖恩:

flag软件包不使用GNU解析规则。在标记软件包的文档中对规则进行了说明在这里回答您的问题:

标志解析在第一个非标志参数(“-”是非标志参数)之前或终止符“-”之后停止。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章