如何访问传递给 Go 程序的命令行参数?
如何在 Go 中访问命令行参数?它们不会作为参数传递给 main
。
一个完整的程序,可能是通过链接多个包创建的,必须有一个名为 main 的包,并且具有一个函数
func main() { ... }
已定义。函数 main.main() 不带任何参数,也不返回任何值。
How do I access command-line arguments in Go? They're not passed as arguments to main
.
A complete program, possibly created by linking multiple packages, must have one package called main, with a function
func main() { ... }
defined. The function main.main() takes no arguments and returns no value.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您可以使用
os.Args
变量。例如,您还可以使用 flag 包,它实现了命令行标志解析。
You can access the command-line arguments using the
os.Args
variable. For example,You can also use the flag package, which implements command-line flag parsing.
Flag 是一个很好的包。
来自 https://gobyexample.com/command-line-flags 的代码示例和注释,作者 < a href="https://markmcgranaghan.com/" rel="nofollow noreferrer">马克·麦克格拉纳汉 和 伊莱·本德斯基:
Flag is a good package for that.
Code example and comments from https://gobyexample.com/command-line-flags by Mark McGranaghan and Eli Bendersky:
快速回答:
测试:
$ go run test.go 1 2 3 4 5
输出:
Quick Answer:
Test:
$ go run test.go 1 2 3 4 5
Out:
命令行参数可以在 os.Args 中找到。在大多数情况下,尽管包 flag 更好,因为它为您进行参数解析。
Command line arguments can be found in os.Args. In most cases though the package flag is better because it does the argument parsing for you.
如果您只想要一个参数列表,彼得的答案正是您所需要的。
但是,如果您正在寻找类似于 UNIX 上现有功能的功能,那么您可以使用 go 实现docopt 的 a>。您可以在此处尝试一下。
docopt 将返回 JSON,然后您可以根据需要进行处理。
Peter's answer is exactly what you need if you just want a list of arguments.
However, if you're looking for functionality similar to that present on UNIX, then you could use the go implementation of docopt. You can try it here.
docopt will return JSON that you can then process to your heart's content.