英文:
What's Go's equivalent of argv[0]?
问题
如何在运行时获取自己程序的名称?Go语言中有没有类似于C/C++的argv[0]的东西?对我来说,使用正确的名称生成用法很有用。
更新:添加了一些代码。
package main
import (
"flag"
"fmt"
"os"
)
func usage() {
fmt.Fprintf(os.Stderr, "用法: myprog [inputfile]\n")
flag.PrintDefaults()
os.Exit(2)
}
func main() {
flag.Usage = usage
flag.Parse()
args := flag.Args()
if len(args) < 1 {
fmt.Println("缺少输入文件。")
os.Exit(1)
}
fmt.Printf("正在打开 %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]);
// ...
}
答案1
得分: 167
import "os"
os.Args[0] // 正在运行的命令的名称
os.Args1 // 第一个命令行参数, ...
参数在os包中被公开 http://golang.org/pkg/os/#Variables
如果你要处理参数,首选的方式是使用flag包 http://golang.org/pkg/flag。特别是对于你的情况,使用flag.Usage
针对你给出的示例,更新如下:
func usage() {
fmt.Fprintf(os.Stderr, "用法:%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 <code>os</code> package http://golang.org/pkg/os/#Variables
If you're going to do argument handling, the <code>flag</code> 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
答案2
得分: 23
使用os
包中的os.Args[0]
package main
import "os"
func main() {
println("我是", os.Args[0])
}
英文:
use os.Args[0]
from the os package
package main
import "os"
func main() {
println("I am ", os.Args[0])
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论