【发布时间】:2010-12-15 12:06:29
【问题描述】:
我正在尝试为 Go 编写一个 GNU 风格的命令行解析器,因为 flags 包还不能处理所有这些:
program -aAtGc --long-option-1 argument-to-1 --long-option-2 -- real-argument
显然,我不想使用 flags 包,因为我正在尝试替换它。有没有其他方法可以进入命令行?
【问题讨论】:
标签: command-line go
我正在尝试为 Go 编写一个 GNU 风格的命令行解析器,因为 flags 包还不能处理所有这些:
program -aAtGc --long-option-1 argument-to-1 --long-option-2 -- real-argument
显然,我不想使用 flags 包,因为我正在尝试替换它。有没有其他方法可以进入命令行?
【问题讨论】:
标签: command-line go
没关系。
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])
}
}
不过,文档还很不完整。
【讨论】:
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])
}
}
【讨论】: