Go 中 argv[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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
参数在
os
包 http://golang.org/pkg/ 中公开os/#Variables如果您要进行参数处理,则使用
flag
包 http://golang.org/pkg/flag 是首选方式。专门针对您的情况flag.Usage
更新您给出的示例:
应该可以解决问题
Arguments are exposed in the
os
package http://golang.org/pkg/os/#VariablesIf you're going to do argument handling, the
flag
package http://golang.org/pkg/flag is the preferred way. Specifically for your caseflag.Usage
Update for the example you gave:
should do the trick
使用 os 包中的
os.Args[0]
use
os.Args[0]
from the os package