Comment obtenir le répertoire de l'exécutable actuel en Go ?
Bonjour à tous ! Je suis un développeur Go débutant et j'ai rencontré un problème : je dois déterminer le répertoire dans lequel se trouve l'exécutable actuel de mon programme. J'écris une petite application CLI qui lit un fichier de configuration situé dans le même dossier que le binaire. Mais lorsque j'exécute le programme depuis un autre répertoire (par exemple, via `go run` depuis la racine du projet ou depuis le PATH système), les chemins relatifs se cassent.
Voici ce que j'ai essayé :
```go
package main
import (
"fmt"
"os"
"path/filepath"
)
func main() {
// Tentative 1 : simplement os.Getwd() — donne le répertoire de travail, pas le dossier du fichier
wd, _ := os.Getwd()
fmt.Println("Working dir:", wd)
// Tentative 2 : os.Args[0] — montre le chemin avec lequel le programme a été appelé
fmt.Println("Args[0]:", os.Args[0])
// Tentative 3 : filepath.Abs(os.Args[0]) — toujours un problème avec les liens symboliques
abs, _ := filepath.Abs(os.Args[0])
fmt.Println("Abs:", abs)
}
```
Le problème est que `os.Args[0]` peut être simplement