os и сторонним пакетом caarlos0/env;localhost:8080) через переменную окружения.USER. Чтобы получить её значение, запустите в консоли echo $USER. Список всех переменных окружения можно вывести командой env.USERNAME. В отличие от Linux, на Windows имя переменной можно указывать в любом регистре. Поэтому echo %USERNAME% и echo %UserName% выведут одно и то же значение. Чтобы увидеть все переменные окружения, используйте команду set.USER. Для получения значения переменной примените echo $USER. Команда printenv выводит список всех переменных окружения.USER в примере на Go. Получить значение переменной можно функцией os.Getenv(key string) string:package main
import (
"fmt"
"os"
)
func main() {
u := os.Getenv("USER")
fmt.Println(u)
} USER нет, функция GetEnv() вернёт пустую строку. Чтобы уточнить, отсутствует переменная или существует с пустым значением, используйте функцию os.LookupEnv(key string) (string, bool).Environ() []string:package main
import (
"fmt"
"os"
)
func main() {
envList := os.Environ()
// выводим первые пять элементов
for i := 0; i < 5 && i < len(envList); i++ {
fmt.Println(envList[i])
}
} имя=значение. Вывод может выглядеть так:SHELL=/bin/bash
SESSION_MANAGER=local/ak-desktop:@/tmp/.ICE-unix/1265,unix/ak-desktop:/tmp/.ICE-unix/1265
QT_ACCESSIBILITY=1
COLORTERM=truecolor
XDG_CONFIG_DIRS=/etc/xdg/xdg-cinnamon:/etc/xdg github.com/caarlos0/env.string, int, bool, float32 и т. д.);time.Duration, url.URL);encoding.TextUnmarshaler;caarlos0/env позволяет проверить, существует ли переменная окружения и соответствует ли её значение определённому типу данных.env:"NAME" от структуры, которую нужно заполнить значениями из окружения.FILES и разделённых двоеточием;HOME;TASK_DURATION (если эта переменная отсутствует, завершим программу с ошибкой).package main
import (
"github.com/caarlos0/env/v6"
"log"
"time"
)
type Config struct {
Files []string `env:"FILES" envSeparator:":"`
Home string `env:"HOME"`
// required требует, чтобы переменная TASK_DURATION была определена
TaskDuration time.Duration `env:"TASK_DURATION,required"`
}
func main() {
var cfg Config
err := env.Parse(&cfg)
if err != nil {
log.Fatal(err)
}
log.Println(cfg)
} env: required environment variable "TASK_DURATION" is not set. Задайте на своём компьютере переменные окружения FILES и TASK_DURATION.SET:SET FILES=test1.txt:test2.txt
SET TASK_DURATION=5s export:export FILES=test1.txt:test2.txt
export TASK_DURATION=5s cmd/skill/flags.go:package main
import (
"flag"
"os"
)
var flagRunAddr string
func parseFlags() {
flag.StringVar(&flagRunAddr, "a", ":8080", "address and port to run server")
flag.Parse()
// для случаев, когда в переменной окружения RUN_ADDR присутствует непустое значение,
// переопределим адрес запуска сервера,
// даже если он был передан через аргумент командной строки
if envRunAddr := os.Getenv("RUN_ADDR"); envRunAddr != "" {
flagRunAddr = envRunAddr
}
}
$ go build -o skill
$ RUN_ADDR=:8081 ./skill
Running server on :8081
$ RUN_ADDR=:8082 ./skill -a :8081
Running server on :8082
os.caarlos0/env.kelseyhightower/envconfig.