Como obter o diretório do arquivo executável atual em Go?
Olá a todos! Sou um desenvolvedor Go iniciante e me deparei com um problema: preciso determinar o diretório onde o arquivo executável atual do meu programa está localizado. Estou escrevendo uma pequena aplicação CLI que lê um arquivo de configuração que está na mesma pasta que o binário. Mas quando executo o programa de outro diretório (por exemplo, via `go run` da raiz do projeto ou do PATH do sistema), os caminhos relativos quebram.
Aqui está o que tentei:
```go
package main
import (
"fmt"
"os"
"path/filepath"
)
func main() {
// Tentativa 1: apenas os.Getwd() — retorna o diretório de trabalho, não a pasta do arquivo
wd, _ := os.Getwd()
fmt.Println("Working dir:", wd)
// Tentativa 2: os.Args[0] — mostra o caminho pelo qual o programa foi chamado
fmt.Println("Args[0]:", os.Args[0])
// Tentativa 3: filepath.Abs(os.Args[0]) — ainda há problema com links simbólicos
abs, _ := filepath.Abs(os.Args[0])
fmt.Println("Abs:", abs)
}
```
O problema é que `os.Args[0]` pode ser apenas