Функция os.LookupEnv

Функция os.LookupEnv получает значение переменной окружения по её имени. В отличие от функции os.Getenv, она возвращает два значения: само значение переменной и булево значение, которое указывает, существует ли переменная в окружении. Это позволяет отличить случай, когда переменная не установлена, от случая, когда она установлена в пустую строку. В первый параметр функция принимает имя переменной окружения в виде строки.

Синтаксис

goos.LookupEnv(key)

Пример

Давайте получим значение переменной окружения 'USER' на системе Linux или macOS:

gopackage main

import (
  "fmt"
  "os"
)

func main() {
  res, ok := os.LookupEnv("USER")
  fmt.Printf("Value: %s, Exists: %t", res, ok)
}

Результат выполнения кода:

goValue: username, Exists: true

Пример

Давайте проверим, установлена ли переменная окружения 'MY_CUSTOM_VAR':

gopackage main

import (
  "fmt"
  "os"
)

func main() {
  res, ok := os.LookupEnv("MY_CUSTOM_VAR")
  if !ok {
    fmt.Println("Variable MY_CUSTOM_VAR is not set")
  } else {
    fmt.Printf("MY_CUSTOM_VAR = %s", res)
  }
}

Результат выполнения кода:

goVariable MY_CUSTOM_VAR is not set

Пример

Давайте покажем разницу между os.LookupEnv и os.Getenv, когда переменная установлена в пустую строку:

gopackage main

import (
  "fmt"
  "os"
)

func main() {
  os.Setenv("EMPTY_VAR", "")
  
  lookupRes, lookupOk := os.LookupEnv("EMPTY_VAR")
  getenvRes := os.Getenv("EMPTY_VAR")
  
  fmt.Printf("LookupEnv: value='%s', ok=%t", lookupRes, lookupOk)
  fmt.Printf("Getenv: value='%s'", getenvRes)
}

Результат выполнения кода:

goLookupEnv: value='', ok=true
Getenv: value=''

Смотрите также

  • функцию os.Getenv,
    которая возвращает значение переменной окружения или пустую строку, если переменная не установлена
  • функцию os.Setenv,
    которая устанавливает значение переменной окружения
  • функцию os.Unsetenv,
    которая удаляет переменную окружения
  • функцию os.Environ,
    которая возвращает копию всех переменных окружения