douji6461 2014-08-11 16:59
浏览 61
已采纳

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

I am parsing command-line arguments. I use the following code:

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

func main() {
    flag.Parse()

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

When I execute the binary like this:

> test -b "random"

I get the expected output, becuase there is one argument, and the flag is set:

1
-b true

However, when I execute the binary the other way around:

> test "random" -b

I get this:

2
-b false

Now, the flag isn't recodnized any more as flag, but as another argument.

Why is it that way? Is there a definition that flags come first and then the arguments? I always thought that the "GNU-way" of passing and parsing arguments is: The first places after the binary are reserved for mandatory arguments. And after that you can put optional arguments and flags.

  • 写回答

1条回答 默认 最新

  • dptj13337 2014-08-11 18:07
    关注

    The flag package does not use GNU parsing rules. The rules are explained in the documentation for flag the package. Your question is answered there:

    Flag parsing stops just before the first non-flag argument ("-" is a non-flag argument) or after the terminator "--".

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?