Ce face os.Getenv
Variabilele de mediu sunt perechi NUME=valoare pe care sistemul le dă fiecărui proces: HOME, PATH, USER, dar și setări proprii (PORT, DATABASE_URL). os.Getenv citește una dintre ele.
Dacă variabila nu există, primești "", la fel ca pentru o variabilă setată la textul gol. Când trebuie să faci diferența, folosește os.LookupEnv. Pe Linux și macOS numele țin cont de majuscule (Path ≠ PATH); pe Windows nu.
Parametri
| Parametru | Descriere |
|---|---|
key |
Numele variabilei, de exemplu "PORT". |
Ce returnează
Valoarea variabilei, ca text; "" dacă lipsește.
Exemple
Exemplul 1: Citirea unei setări
În practică variabila e setată din terminal (PORT=9000 ./server); aici o setăm din cod ca exemplul să fie complet.
package main
import (
"fmt"
"os"
)
func main() {
os.Setenv("ORAS", "Iași")
fmt.Println("ORAS =", os.Getenv("ORAS"))
fmt.Printf("NECUNOSCUT = %q\n", os.Getenv("NECUNOSCUT"))
}
Rezultat
ORAS = Iași
NECUNOSCUT = ""
Exemplul 2: Valoare implicită
package main
import (
"fmt"
"os"
)
func envSau(nume, implicit string) string {
if v := os.Getenv(nume); v != "" {
return v
}
return implicit
}
func main() {
os.Setenv("APP_MOD", "productie")
fmt.Println("mod:", envSau("APP_MOD", "dezvoltare"))
fmt.Println("port:", envSau("APP_PORT", "8080"))
}
Rezultat
mod: productie
port: 8080
Exemplul 3: Variabile ale sistemului
Valorile diferă de la un calculator la altul.
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println("HOME:", os.Getenv("HOME"))
fmt.Println("USER:", os.Getenv("USER"))
fmt.Println("SHELL:", os.Getenv("SHELL"))
}
Rezultat posibil (diferă la fiecare rulare)
HOME: /home/ana
USER: ana
SHELL: /bin/bash
Greșeli frecvente
- Transformi direct în număr:
port, _ := strconv.Atoi(os.Getenv("PORT")). Dacă variabila lipsește, primești 0 fără niciun avertisment; verifică eroarea și pune o valoare implicită. - Scrii numele cu litere mici pe Linux (
os.Getenv("home")). Numele sunt sensibile la majuscule.
Comenzi înrudite
os.LookupEnv: Citește o variabilă de mediu și spune separat dacă există (chiar și cu valoare goală).os.Setenv: Setează o variabilă de mediu pentru programul curent; Unsetenv o șterge.os.Environ: Returnează toate variabilele de mediu, ca o listă de texte de forma NUME=valoare.os.ExpandEnv: Înlocuiește $NUME și ${NUME} dintr-un text cu valorile variabilelor de mediu.