How to assign default value if env var is empty?

There's no built-in to fall back to a default value, so you have to do a good old-fashioned if-else.

But you can always create a helper function to make that easier:

func getenv(key, fallback string) string {
    value := os.Getenv(key)
    if len(value) == 0 {
        return fallback
    }
    return value
}

Note that as @michael-hausenblas pointed out in a comment, keep in mind that if the value of the environment variable is really empty, you will get the fallback value instead.

Even better as @ŁukaszWojciechowski pointed out, using os.LookupEnv:

func getEnv(key, fallback string) string {
    if value, ok := os.LookupEnv(key); ok {
        return value
    }
    return fallback
}

To have a clean code I do this:

myVar := getEnv("MONGO_PASS", "default-pass")

I defined a function that is used in the whole app

// getEnv get key environment variable if exist otherwise return defalutValue
func getEnv(key, defaultValue string) string {
    value := os.Getenv(key)
    if len(value) == 0 {
        return defaultValue
    }
    return value
}

Go doesn't have the exact same functionality as Python here; the most idiomatic way to do it though, I can think of, is:

mongo_password := "pass"
if mp := os.Getenv("MONGO_PASS"); mp != "" {
    mongo_password = mp
}

What you're looking for is os.LookupEnv combined with an if statement.

Here is janos's answer updated to use LookupEnv:

func getEnv(key, fallback string) string {
    value, exists := os.LookupEnv(key)
    if !exists {
        value = fallback
    }
    return value
}