Cómo obtener el directorio del archivo ejecutable actual en Go
¡Hola a todos! Soy un desarrollador Go principiante y me encontré con un problema: necesito determinar el directorio donde se encuentra el archivo ejecutable actual de mi programa. Estoy escribiendo una pequeña aplicación CLI que lee un archivo de configuración ubicado en la misma carpeta que el binario. Pero cuando ejecuto el programa desde otro directorio (por ejemplo, a través de `go run` desde la raíz del proyecto o desde el PATH del sistema), las rutas relativas se rompen.
Esto es lo que he probado:
```go
package main
import (
"fmt"
"os"
"path/filepath"
)
func main() {
// Intento 1: simplemente os.Getwd() — da el directorio de trabajo, no la carpeta del archivo
wd, _ := os.Getwd()
fmt.Println("Working dir:", wd)
// Intento 2: os.Args[0] — muestra la ruta con la que se llamó al programa
fmt.Println("Args[0]:", os.Args[0])
// Intento 3: filepath.Abs(os.Args[0]) — todavía hay problema con enlaces simbólicos
abs, _ := filepath.Abs(os.Args[0])
fmt.Println("Abs:", abs)
}
```
El problema es que `os.Args[0]` puede ser simplemente