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

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

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

Go
慕侠2389804 2021-08-10 13:26:54
我正在解析命令行参数。我使用以下代码: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 方式”是:二进制文件后的第一个位置是为强制参数保留的。之后,您可以放置可选参数和标志。
查看完整描述

1 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

flag软件包不使用 GNU 解析规则。这些规则在 flag the package 的文档中进行了解释。你的问题在那里得到了回答:

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


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

添加回答

举报

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