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

发布于 2024-09-12 01:01:00 字数 521 浏览 12 评论 0原文

如何在运行时获取自己的程序名称? 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]);
    // ...
}

How can I get my own program's name at runtime? What's Go's equivalent of C/C++'s argv[0]? To me it is useful to generate the usage with the right name.

Update: added some code.

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]);
    // ...
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

对你的占有欲 2024-09-19 01:01:00
import "os"
os.Args[0] // name of the command that it is running as
os.Args[1] // first command line parameter, ...

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

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

更新您给出的示例:

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

应该可以解决问题

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

Arguments are exposed in the os package http://golang.org/pkg/os/#Variables

If you're going to do argument handling, the flag package http://golang.org/pkg/flag is the preferred way. Specifically for your case flag.Usage

Update for the example you gave:

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

should do the trick

寄离 2024-09-19 01:01:00

使用 os 包中的 os.Args[0]

package main
import "os"
func main() {
    println("I am ", os.Args[0])
}

use os.Args[0] from the os package

package main
import "os"
func main() {
    println("I am ", os.Args[0])
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文