有时我想在命令行上传递一个没有名字的参数,比如像wc
这样的命令,它需要一个文件名作为输入:
wc filename.txt
字符串
对于flag package,看起来每个标志都必须有一个名称,如果未指定,则使用默认值。
filename := flag.String("filename", "foo.txt", "Which file to count the words for")
型
但是我不想要一个默认值,我希望程序在没有指定参数的情况下退出并返回一个错误码。我如何向Go语言的二进制文件中添加一个必需的参数?
我还希望能够解析带有类型信息的参数,所以直接检查Args()并不能完全做到这一点。
3条答案
按热度按时间zf9nrax11#
你只需要检查
flag.NArg()
。来自https://golang.org/pkg/flag/#NArg:
NArg是处理标志后剩余的参数数。
字符串
ikfrs5lh2#
您还可以使用flag.narg()函数来确保您拥有所需数量的位置参数,尽管我不知道它在len(flag.args())上提供了什么
字符串
dauxcl2d3#
如果任何人对标准
flag
包的行为不满意,即在看到第一个位置参数时立即停止解析,您可以使用这些小型库函数来解析标志,标志可以在位置参数之前或之后。字符串