如何在Golang中使用flag包指定位置参数?

时间:2014-08-09 03:58:54

标签: go

有时我想在命令行上传递一个没有名字的参数,比如像wc这样的命令,它将文件名作为输入:

wc filename.txt

使用flag package,看起来必须为每个标志指定一个名称,如果未指定,则为默认值。

filename := flag.String("filename", "foo.txt", "Which file to count the words for")

但是我不想要一个默认值,如果没有指定参数,我希望程序以错误代码退出。我如何向Go二进制文件添加必需的参数?

我还希望能够解析带有类型信息的参数,所以直接检查Args()并没有完全做到。

2 个答案:

答案 0 :(得分:13)

您只需检查flag.NArg()

来自https://golang.org/pkg/flag/#NArg

  

NArg是处理标志后剩余的参数数量。

flag.Parse()
if flag.NArg() == 0 { 
    flag.Usage()
    os.Exit(1)
}

答案 1 :(得分:2)

你也可以使用flag.Narg()函数来确保你拥有所需数量的位置参数,虽然我不知道它给你什么超过len(flag.Args())

y <- as.xts(temp, dateFormat="Date")