【问题标题】:How do I get the command line arguments in Go without the "flags" package?如何在没有“标志”包的情况下在 Go 中获取命令行参数?
【发布时间】: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


    【解决方案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])
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-01-23
      • 1970-01-01
      • 2015-06-23
      • 2021-01-27
      • 2014-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-31
      相关资源
      最近更新 更多