Go con Ejemplos: Variables de entorno

Las Variables de entorno son un mecanismo universal para transmitir datos de configuración a nuestros programas. A continuación veremos como definir, obtener y listar variables de entorno.

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

Para definir un par variable/valor usamos la función os.Setenv. Para obtener el valor de una variable de entorno usamos os.Getenv, ésta última función regresará una cadena vacía si la variable no está definida en el entorno.

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

Podemos usar os.Environ para listar todos los pares variable/valor presentes en el entorno. Ésta función regresa un slice de cadenas en la forma NOMBRE=valor. Puedes usar strings.Split o strings.SplitN en estos valores para separar el nombre de la variable y su valor. El siguiente ejemplo imprime el nombre de todas las variables que están definidas en el entorno.

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

Al correr el siguiente programa podemos observar que el valor asignado a la variable FOO dentro del programa es mostrado en pantalla, mientras que el valor de BAR queda vacío.

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

La lista de variables de entorno disponibles depende del sistema operativo.

TERM_PROGRAM
PATH
SHELL
...

Si definimos BAR en el entorno antes de llamar al programa, el último toma el valor del ambiente y lo imprime en pantalla.

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

Siguiente ejemplo: Creando procesos.