如何在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]`可能只是