os.LookupEnv în Go

Citește o variabilă de mediu și spune separat dacă există (chiar și cu valoare goală).

Sintaxă
func LookupEnv(key string) (string, bool)

Ce face os.LookupEnv

os.LookupEnv returnează valoarea și un bool. Al doilea rezultat este true dacă variabila este setată, chiar și la textul gol. Așa poți deosebi „setată, dar goală” de „lipsă”, ceea ce os.Getenv nu poate.

Parametri

Parametru Descriere
key Numele variabilei.

Ce returnează

Valoarea și true dacă variabila există; "" și false dacă nu.

Exemple

Exemplul 1: Goală față de lipsă

package main

import (
    "fmt"
    "os"
)

func main() {
    os.Setenv("PREFIX", "")
    for _, nume := range []string{"PREFIX", "SUFIX"} {
        v, ok := os.LookupEnv(nume)
        fmt.Printf("%s: valoare=%q există=%v\n", nume, v, ok)
    }
}

Rezultat

PREFIX: valoare="" există=true
SUFIX: valoare="" există=false

Exemplul 2: Variabilă obligatorie

package main

import (
    "fmt"
    "os"
)

func main() {
    os.Setenv("DB_HOST", "localhost")
    for _, nume := range []string{"DB_HOST", "DB_PAROLA"} {
        if _, ok := os.LookupEnv(nume); !ok {
            fmt.Println("lipsește variabila obligatorie", nume)
            continue
        }
        fmt.Println(nume, "este setată")
    }
}

Rezultat

DB_HOST este setată
lipsește variabila obligatorie DB_PAROLA

Greșeli frecvente

  • Folosești LookupEnv și verifici doar valoarea, ignorând ok. Atunci e la fel ca Getenv.

Comenzi înrudite

  • os.Getenv: Returnează valoarea unei variabile de mediu sau textul gol dacă variabila nu există.
  • 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.