我在这里寻找的是相当于C的argv[0]
。
flag
包只能访问命令行参数,但不能访问可执行文件名。
虽然可以使用Getpid()
获取进程,但我找不到能够访问整个命令行的内容。 syscall
命令GetCommandLine()
似乎只能在Windows上使用。
答案 0 :(得分:34)
C中的传统argv[0]
在Go的os.Args[0]
中为available。 flags包只处理切片os.Args[1:]
答案 1 :(得分:7)
从Go 1.8开始,答案为os.Executable()
。与其他语言类似,也有os.Args[0]
。一个重要的区别是保证os.Executable()
返回绝对路径。
答案 2 :(得分:2)
更好的方法如下:
filename:=filepath.Base(os.Args[0])
这将仅显示应用程序名称并为您删除路径。