Avatar ·

Wie erhalte ich das Verzeichnis der aktuellen ausführbaren Datei in Go?

Hallo zusammen! Ich bin ein Anfänger in der Go-Entwicklung und bin auf ein Problem gestoßen: Ich muss das Verzeichnis ermitteln, in dem sich die aktuelle ausführbare Datei meines Programms befindet. Ich schreibe eine kleine CLI-Anwendung, die eine Konfigurationsdatei liest, die sich im selben Ordner wie die Binärdatei befindet. Aber wenn ich das Programm aus einem anderen Verzeichnis starte (z.B. über `go run` aus dem Projektstamm oder aus dem systemweiten PATH), funktionieren relative Pfade nicht mehr. Hier ist, was ich ausprobiert habe: ```go package main import ( "fmt" "os" "path/filepath" ) func main() { // Versuch 1: Einfach os.Getwd() — gibt das Arbeitsverzeichnis zurück, nicht den Ordner der Datei wd, _ := os.Getwd() fmt.Println("Working dir:", wd) // Versuch 2: os.Args[0] — zeigt den Pfad, mit dem das Programm aufgerufen wurde fmt.Println("Args[0]:", os.Args[0]) // Versuch 3: filepath.Abs(os.Args[0]) — immer noch Probleme mit symbolischen Links abs, _ := filepath.Abs(os.Args[0]) fmt.Println("Abs:", abs) } ``` Das Problem ist, dass `os.Args[0]` einfach nur