Ce face os.Getwd
os.Getwd spune în ce director rulează programul, adică de unde pornesc căile relative. Echivalentul din terminal este pwd.
Directorul curent este cel din care ai pornit programul, nu cel în care se află fișierul executabil. Pentru locul executabilului folosește os.Executable.
Ce returnează
Calea absolută a directorului curent și nil, sau o eroare (rar, de exemplu dacă directorul a fost șters între timp).
Exemple
Exemplul 1: Afișarea directorului curent
Calea completă diferă de la un calculator la altul.
package main
import (
"fmt"
"os"
)
func main() {
wd, err := os.Getwd()
if err != nil {
fmt.Println("eroare:", err)
return
}
fmt.Println("Directorul curent:", wd)
}
Rezultat posibil (diferă la fiecare rulare)
Directorul curent: /home/ana/proiecte/facturi
Exemplul 2: Getwd după Chdir
Afișăm doar ultimul nume din cale, care nu depinde de calculator.
package main
import (
"fmt"
"os"
"path/filepath"
)
func main() {
os.MkdirAll("magazin/comenzi", 0o755)
os.Chdir("magazin/comenzi")
wd, _ := os.Getwd()
fmt.Println("ultimul director:", filepath.Base(wd))
fmt.Println("părintele:", filepath.Base(filepath.Dir(wd)))
fmt.Println("cale absolută:", filepath.IsAbs(wd))
}
Rezultat
ultimul director: comenzi
părintele: magazin
cale absolută: true
Greșeli frecvente
- Presupui că directorul curent este cel al proiectului. Dacă programul e pornit din alt loc (de un serviciu systemd, de un cron), directorul curent este altul.
Comenzi înrudite
os.Chdir: Schimbă directorul curent al programului; căile relative pornesc apoi de acolo.os.Executable: Returnează calea fișierului executabil care rulează acum (programul compilat).filepath.Abs: Transformă o cale relativă în cale absolută, pornind de la directorul curent.filepath.Base: Returnează ultimul element al unei căi: numele fișierului (sau al ultimului director).