有时候我想在命令行上传递一个没有名字的参数,比如一个命令wc
,它将文件名作为输入:
wc filename.txt
Run Code Online (Sandbox Code Playgroud)
使用flag包,看起来每个标志都必须被赋予一个名称,如果未指定则具有默认值.
filename := flag.String("filename", "foo.txt", "Which file to count the words for")
Run Code Online (Sandbox Code Playgroud)
但是我不想要一个默认值,如果没有指定参数,我希望程序以错误代码退出.如何向Go二进制文件添加必需参数?
我还希望能够使用类型信息解析参数,因此直接检查Args()并不能完全解决.
One*_*One 14
你只需要检查flag.NArg()
.
来自https://golang.org/pkg/flag/#NArg:
NArg是处理标志后剩余的参数数.
flag.Parse()
if flag.NArg() == 0 {
flag.Usage()
os.Exit(1)
}
Run Code Online (Sandbox Code Playgroud)