20

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

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

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

4

2 回答 2

45

没关系。

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

但是,文档非常不完整。

于 2009-11-11T15:26:56.180 回答
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])
    }
}
于 2021-02-02T08:20:38.567 回答