Змінні середовища|Environment Variables
#
// [Змінніні середовища](https://uk.wikipedia.org/wiki/Змінні_середовища)
// це універсальний спосіб [передачі конфігурацій програмам, що працюють у середовищі Unix](https://www.12factor.net/uk/config).
// Давайте розглянемо як створювати, отримувати та показувати ці змінні.
package main
import (
"fmt"
"os"
"strings"
)
func main() {
// Ми можемо скористатись `os.Setenv` для встановлення пар
// ключ/значення і `os.Getenv` для отримання значення по ключу
// (в разі якщо ключ не буде знайдено - повернеться пустий рядок).
os.Setenv("FOO", "1")
fmt.Println("FOO:", os.Getenv("FOO"))
fmt.Println("BAR:", os.Getenv("BAR"))
// `os.Environ` поверне зріз усіх змінних середовища, у вигляді
// `KEY=value` (який ви надалі можете розділити на частини
// скориставшись `strings.Split`). В даному прикладі, ми лише
// виведемо назви ключів змінних.
fmt.Println()
for _, e := range os.Environ() {
pair := strings.Split(e, "=")
fmt.Println(pair[0])
}
}
# Запуск програми показує `FOO` матиме значення `1`
# (бо ми встановили його), `BAR` не матиме жодного
# значення, бо воно відсутнє в середовищі.
$ go run environment-variables.go
FOO: 1
BAR:
# Перелік ключів змінних середовища залежить від
# власне машини на якій код запускається.
TERM_PROGRAM
PATH
SHELL
...
FOO
# Якщо ми встановимо `BAR` в середовищі напередодні
# запуску, програма що запуститься слідом матиме
# змогу доступ до цієї зміннної.
$ BAR=2 go run environment-variables.go
FOO: 1
BAR: 2
...