有时我想在命令行上传递一个没有名字的参数,比如像wc
这样的命令,它将文件名作为输入:
wc filename.txt
使用flag package,看起来必须为每个标志指定一个名称,如果未指定,则为默认值。
filename := flag.String("filename", "foo.txt", "Which file to count the words for")
但是我不想要一个默认值,如果没有指定参数,我希望程序以错误代码退出。我如何向Go二进制文件添加必需的参数?
我还希望能够解析带有类型信息的参数,所以直接检查Args()并没有完全做到。
答案 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")