如何在没有“flags”包的情况下获取Go中的命令行参数?

时间:2009-11-11 15:05:47

标签: command-line go

我正在尝试为Go编写一个GNU风格的命令行解析器,因为flags包还没有处理所有这些:

program -aAtGc --long-option-1 argument-to-1 --long-option-2 -- real-argument

显然,我不想使用flags包,因为我正在尝试替换它。有没有其他方法可以进入命令行?

2 个答案:

答案 0 :(得分:43)

没关系。

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 :(得分:0)

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])
    }
}