小编典典

Go 与 argv[0] 的等价物是什么?

go

如何在运行时获取我自己的程序名称?Go 相当于 C/C++ 的 argv[0] 是什么?对我来说,生成具有正确名称的用法很有用。

更新:添加了一些代码。

package main

import (
    "flag"
    "fmt"
    "os"
)

func usage() {
    fmt.Fprintf(os.Stderr, "usage: myprog [inputfile]\n")
    flag.PrintDefaults()
    os.Exit(2)
}

func main() {
    flag.Usage = usage
    flag.Parse()

    args := flag.Args()
    if len(args) < 1 {
        fmt.Println("Input file is missing.");
        os.Exit(1);
    }
    fmt.Printf("opening %s\n", args[0]);
    // ...
}

阅读 238

收藏
2021-11-26

共1个答案

小编典典

import "os"
os.Args[0] // name of the command that it is running as
os.Args[1] // first command line parameter, ...

参数在os包http://golang.org/pkg/os/#Variables中公开

如果您要进行参数处理,则flag包http://golang.org/pkg/flag是首选方式。专门针对您的情况flag.Usage

更新您给出的示例:

func usage() {
    fmt.Fprintf(os.Stderr, "usage: %s [inputfile]\n", os.Args[0])
    flag.PrintDefaults()
    os.Exit(2)
}

应该做的伎俩

2021-11-26