Go

os.Getenv with Defaults

admin by @admin ADMIN
1d ago
May 31, 2026
Public
0 0 up · 0 down Sign in to vote
`os.Getenv` returns "" when unset — easy to miss. Wrap it with a typed helper that supplies defaults and parses numerics. Saves boilerplate at every config-read site.
Go
Raw
package main

import (
    "fmt"
    "os"
    "strconv"
    "time"
)

func envStr(key, def string) string {
    if v, ok := os.LookupEnv(key); ok { return v }
    return def
}

func envInt(key string, def int) int {
    if v, ok := os.LookupEnv(key); ok {
        if n, err := strconv.Atoi(v); err == nil { return n }
    }
    return def
}

func envBool(key string, def bool) bool {
    if v, ok := os.LookupEnv(key); ok {
        if b, err := strconv.ParseBool(v); err == nil { return b }
    }
    return def
}

func envDuration(key string, def time.Duration) time.Duration {
    if v, ok := os.LookupEnv(key); ok {
        if d, err := time.ParseDuration(v); err == nil { return d }
    }
    return def
}

func main() {
    port    := envInt("PORT", 8080)
    debug   := envBool("DEBUG", false)
    timeout := envDuration("HTTP_TIMEOUT", 5*time.Second)
    name    := envStr("APP_NAME", "myapp")
    fmt.Printf("port=%d debug=%t timeout=%s name=%s\n", port, debug, timeout, name)
}
Tags

Save your own code snippets

Create a free account and build your private vault. Share publicly whenever you want.