Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Variáveis de ambiente
  2. Adicionando variável
  3. Recuperando variável
  4. Excluindo variável
  5. Verificando variável
  6. Interpolando variáveis
  7. Listando variáveis
  8. retorno error

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 execução.

Para termos acesso aos recursos das variáveis de ambiente em Go, precisamos utilizar 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 da aplicação, utilizamos a função Setenv como mostrado na sintaxe abaixo:

Sintaxe
os.Setenv(key, value string) error
Onde
value: string contendo valor associado a chave
key: string contendo nome da variável
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 da aplicação, utilizamos a função Getenv como mostrado na sintaxe abaixo:

Sintaxe
os.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 pela função.

Para excluir uma variável ambiente, utilizamos a função 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 de ambiente está definida ou possui valor, utilizamos a função 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 key 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 a função ExpandEnv podemos retornar uma string composta de variáveis de ambiente fazendo uso dos placeholders $ ou ${} que são declarados em uma string que passada como argumento.

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 a função Environ como mostrado na sintaxe abaixo:

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

No exemplo abaixo, a função 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. 09/09/2025 - revisão 1: Ajustes: pontuais e em sintaxes
  2. 15/05/2025 - versão inicial