= nil { log.Fatalf("Failed to get current executable path: %v", err) } fmt.Println("Current executable path:", path) } 方法二:使用 filepath.Abs 和os.Args[0] 这种方法适用于直接运行源代码文件(如使用 go run 命令)或已编译的可执行文件。 go package main import ( "fmt" "log" "os...
res, _ := filepath.EvalSymlinks(filepath.Dir(exePath)) return res } 首先通过go run启动 D:\Projects\demo>go run main.go getCurrentAbPathByExecutable = C:\Users\XXX\AppData\Local\Temp\go-build216571510\b001\exe 再尝试go build执行 D:\Projects\demo>go build & demo.exe getCurrentAbPathBy...
func getCurrentAbPathByExecutable() string { exePath, err := os.Executable() if err != nil { log.Fatal(err) } res, _ := filepath.EvalSymlinks(filepath.Dir(exePath)) return res } 首先通过go run启动 D:\Projects\demo>go run main.go getCurrentAbPathByExecutable = C:\Users\XXX\App...
golang 可以使用下面的函数获取当前执行程序的路径。 func getCurrentPath() string {ifex, err := os.Executable(); err ==nil {returnfilepath.Dir(ex) }return"./"}
如果相同,说明是通过go run启动的,因为当前执行路径是在TEMP目录;不同的话自然是go build的启动方式。下面是完整代码:在windows执行 在windows编译后上传到Linux执行 对比结果,我们可以看到,在不同的系统中,不同的执行方式,我们封装的getCurrentAbPath方法最终都输出的正确的结果,perfect!
getCurrentAbPathByExecutable = D:\Projects\demo 通过对比执行结果,我们发现两种执行方式,我们获取到了不同的路径。而且很明显,go run获取到的路径是错误的。 原因: 这是由于go run会将源代码编译到系统TEMP或TMP环境变量目录中并启动执行;而go build只会在当前目录编译出可执行文件,并不会自动执行。
bupafengyu1楼•36 分钟前
Executable returns the path name for the executable that started the current process. Executable returns anabsolute pathunless an error occurred.The main use case is finding resources located relative to an executable. 顾名思义,返回binary所在的绝对路径 ...
simple, reliable, and efficient software. You can get the current directory of the source code you are running or the executable file. With theosandfile/filepathbuilt-in package, we can simply get this information. We can also use a third-party library(osext)for getting the executable path...
GOBINgo的可执行路径,默认位于GOPATH/bin 目录,这个路径决定了你执行go install后的编译文件的安装路径,需要将他加入到你的系统PATH环境变量中; GO111MODULE 这个是用来控制go的运行模式是模块方式还是GOPATH模式; GOARCH系统架构,如 amd64, 386, arm, ppc64 , 这个配置不合适代码直接无法运行; ...