As variáveis de ambiente são um conjunto de itens chave-valor em seu sistema operacional que podem ser acessadas tanto para leitura quanto para escrita. Sua aplicação pode utilizar as variáveis dependendo do ambiente de desenvolvimento, produção ou outra configuração necessária para executar.

Para termos acesso aos recursos das variáveis de ambiente em Go, precisamos importar o package os:

Sintaxe
import "os"

Dependendo do ambiente/S.O onde seu código está sendo executado, podem existir restrições no uso das variáveis de ambiente.

Para adicionar uma variável de ambiente, utilizamos o método Setenv como mostrado na sintaxe abaixo:

Sintaxe
os.Setenv(key, value string) error
Onde
key: string contendo nome da variável
value: string contendo valor associado a chave
Exemplo 1
package main
import "os"

func main() {
	os.Setenv("MINHA_VAR", "meu_valor")
}
Saída
-

Para recuperar o valor de uma variável de ambiente, utilizamos o método Getenv como mostrado na sintaxe abaixo:

Sintaxe
func Getenv(key string) string
Onde
key: string contendo nome da variável
Exemplo 2
package main

import "fmt"
import	"os"

func main() {
    os.Setenv("MINHA_VAR", "meu_valor")
	fmt.Println(os.Getenv("MINHA_VAR"))
}
Saída
meu_valor

Caso a chave não exista, uma string vazia será retornada pelo método.

Para excluir uma variável ambiente, utilizamos o método Unsetenv como mostrado na sintaxe abaixo:

Sintaxe
os.Unsetenv(key string) error
Onde
key: string contendo nome da variável
Exemplo 3
package main

import "fmt"
import	"os"

func main() {
    os.Setenv("MINHA_VAR", "meu_valor")
    fmt.Println(os.Getenv("MINHA_VAR"))
    os.Unsetenv("MINHA_VAR")
    fmt.Println(os.Getenv("MINHA_VAR")) //string vazia
}
Saída
-

Para verificar se uma variável ambiente está definida ou possui valor, utilizamos o método LookupEnv como mostrado na sintaxe abaixo:

Sintaxe
os.LookupEnv(key string) (string, bool)
Onde
key: string contendo nome da variável
Retorno
string: valor associado a key. string vazia caso key não exista
bool: true se chave definida, false caso contrário
Exemplo 4
package main

import "fmt"
import	"os"

func main() {

    //os.Setenv("MINHA_VAR", "meu_valor")
    mvar, existe := os.LookupEnv("MINHA_VAR")

    if existe {
	    fmt.Println("MINHA_VAR definida")
	    fmt.Println(mvar)
    }else{
        fmt.Println("MINHA_VAR não definida")
    }
}
Saída
MINHA_VAR não definida

Com o método ExpandEnv podemos gerar uma string composta de variáveis de ambiente fazendo utilizando os placeholders $ ou ${}.

Sintaxe
func ExpandEnv(s string) string
Onde
s: string contendo $ ou ${} para substituição
Exemplo 5
package main

import (
	"fmt"
	"os"
)

func main() {

	os.Setenv("NOME", "usuario")
	os.Setenv("SENHA", "minha_senha")
	os.Setenv("PAPEL", "admin")

	exp := os.ExpandEnv("autenticacao: NOME@$SENHA@${PAPEL}")
	fmt.Println(exp)
}
Saída
autenticacao: NOME@minha_senha@admin

Além de adicionar variáveis e recuperar seus valores, em alguns momentos precisamos listar todas as variáveis de ambiente. Para tal, utilizamos o método Environ como mostrado na sintaxe abaixo:

Sintaxe
os.Environ() []string
Retorno
Array de strings contendo variáveis de ambiente

No exemplo abaixo, o método SplitN, do package strings, será utilizado para separar as variáveis de ambiente em 2 partes separadas por "=". A saída depende do ambiente local onde será executado.

Exemplo 6
package main

import "fmt"
import "os"
import "strings" //splitN

func main() {

os.Setenv("MINHA_VAR1", "meu_valor1")
os.Setenv("MINHA_VAR2", "meu_valor2")

	for _, var_amb := range os.Environ() {
		item:= strings.SplitN(var_amb, "=", 2)
		fmt.Println(item[0],item[1])
	}
}
Saída
//outras variáveis omitidas
MINHA_VAR1 meu_valor1
MINHA_VAR2 meu_valor2
  1. 15/05/2025 - versão inicial