Avatar ·

如何在Go中获取当前可执行文件的目录?

大家好!我是一名Go初学者,遇到了一个问题:我需要确定当前程序可执行文件所在的目录。我正在编写一个小型CLI应用程序,它读取与二进制文件位于同一文件夹中的配置文件。但是当我从其他目录运行程序时(例如,通过`go run`从项目根目录运行,或从系统PATH运行),相对路径就会失效。 以下是我尝试过的代码: ```go package main import ( "fmt" "os" "path/filepath" ) func main() { // 尝试1:os.Getwd() — 返回工作目录,而不是文件所在的文件夹 wd, _ := os.Getwd() fmt.Println("Working dir:", wd) // 尝试2:os.Args[0] — 显示调用程序时的路径 fmt.Println("Args[0]:", os.Args[0]) // 尝试3:filepath.Abs(os.Args[0]) — 仍然存在符号链接的问题 abs, _ := filepath.Abs(os.Args[0]) fmt.Println("Abs:", abs) } ``` 问题在于`os.Args[0]`可能只是