Go Em Exemplos: Environment Variables

Variáveis de ambiente são um mecanismo universal para injetar informações e configurações em programas unix. Será apresentado como setar, acessar e listar variáveis de ambiente.

package main
import (
    "fmt"
    "os"
    "strings"
)
func main() {

Para configurar um par de chave/valor, usa-se os.Setenv. Para acessar o valor para uma chave, usa-se os.Getenv. O segundo, retorna uma string vazia se a chave não for encontrada no ambiente.

    os.Setenv("FOO", "1")
    fmt.Println("FOO:", os.Getenv("FOO"))
    fmt.Println("BAR:", os.Getenv("BAR"))

É utilizado os.Environ para listar todos os pares de chave/valor presentes no ambiente. Isto retorna uma slice de strings no formato CHAVE=valor. É possível utilizar strings.SplitN para acessar chaves e valores. Aqui são printadas todas as chaves. Para acesso aos valores seria usado pair[1].

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

Executando o programa, é exibido que o valor de FOO é o definido no código, mas BAR está vazio.

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

A lista de chaves no ambiente vai variar a depender da sua máquina.

TERM_PROGRAM
PATH
SHELL
...
FOO

É possível definir o valor para uma variável ao executar o programa, assim BAR terá um valor.

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

Próximo exemplo: HTTP Client.