Go в примери: Променливи на обкръжението

Променливите на обкръжението (работната среда)1 са всеобщ способ за предаване на сведнения за настройки в програмите в Юникс2. Да видим как се задават, вземат и извеждат като списък променливите на средата.


  1. environment variables – https://bg.wikipedia.org/wiki/Променлива_на_средата
  2. Препоръчва се ползване на данни за настройки на програматa направо от средата. https://www.12factor.net/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 връща отрязък от низове, предствляващи двойки КЛЮЧ=стойност. Можете да ползвате strings.SplitN за да ги разделите. Тук извеждаме списък с всички ключове (имена) на променливи от текущото обкръжение – средата, в която се изпълнява нашата програма.

    fmt.Println()
    for _, e := range os.Environ() {
        pair := strings.SplitN(e, "=", 2)
        fmt.Println(pair[0])
    }
}

Като пуснем програмата виждаме стойността на променливата FOO, която сме задали, както и че стойността на BAR е празна.

$ go run environment-variables.go
FOO: 1
BAR: 

Списъкът с ключове от средата може да е различен на всяка машина.

SHELL
SESSION_MANAGER
PERLBREW_ROOT
QT_ACCESSIBILITY
COLORTERM
...
FOO

Ако пък първо зададем стойност за BAR, програмата ни ще изведе наличната стойност.

$ BAR=2 go run environment-variables.go
FOO: 1
BAR: 2
...

Следващ пример: .