我正在解析命令行参数。我使用以下代码: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 的文档中进行了解释。你的问题在那里得到了回答:
标志解析在第一个非标志参数(“-”是非标志参数)之前或终止符“--”之后停止。
- 1 回答
- 0 关注
- 199 浏览
添加回答
举报
0/150
提交
取消