如何在没有“标志”包的情况下在 Go 中获取命令行参数?
Posted
技术标签:
【中文标题】如何在没有“标志”包的情况下在 Go 中获取命令行参数?【英文标题】:How do I get the command line arguments in Go without the "flags" package? 【发布时间】:2010-12-15 12:06:29 【问题描述】:我正在尝试为 Go 编写一个 GNU 风格的命令行解析器,因为 flags
包还不能处理所有这些:
program -aAtGc --long-option-1 argument-to-1 --long-option-2 -- real-argument
显然,我不想使用 flags
包,因为我正在尝试替换它。有没有其他方法可以进入命令行?
【问题讨论】:
【参考方案1】:没关系。
package main
import (
"fmt"
"os"
)
func main()
args := os.Args
fmt.Printf("%d\n", len(args))
for i := 0; i<len(args); i++
fmt.Printf("%s\n", args[i])
不过,文档还很不完整。
【讨论】:
我正在寻找一个实现,只是想知道你是否完成了它/开源了代码? 感谢您的解决方案。我不知道这是否相关。但其他人可能会觉得它很有用。有两种方法可以运行它。 1) 去构建 prog.go ./prog hello world slappa 2) 去运行 prog.go hello world slappa【参考方案2】:os.Args 的第一个参数是 go 文件的名称,所以要只获取命令行参数,你应该这样做
package main
import (
"fmt"
"os"
)
func main()
args := os.Args[1:]
for i := 0; i<len(args); i++
fmt.Println(args[i])
【讨论】:
以上是关于如何在没有“标志”包的情况下在 Go 中获取命令行参数?的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有节点的情况下在命令行上执行javascript [关闭]
如何在没有意外匹配的情况下在 PHP 中的字符串中查找整个单词?
如何在没有互联网连接的情况下在android中获取当前纬度和经度?
如何在没有 fseek 和 ftell 的情况下在 ANSI C 中获取文件大小?