envcfg 
Package envcfg provides
environment variable mapping to structs.
It can be used to read configuration parameters from the
environment.
Fields for which environment variables can be found are
overwritten, otherwise they are left to their previous value.
This package can be used, for example, after gcfg to override settings
provided in a configuration file.
import "github.com/Pacien/envcfg"
Documentation
Package documentation can be found on GoDoc
Usage example
Set environment variables:
export PORT=8080
export USER_PASSWORD="S3cUrE"
Create a struct optionally with tagged fields and/or already set
values, then call the ReadInto function to read the
values set in the environment variables.
package main
import (
"fmt"
"github.com/Pacien/envcfg"
)
type Config struct {
Server struct {
Port int `env:"PORT" absenv:"true"`
}
User struct {
Username string
Password string
}
}
var cnf Config
func (c *Config) setDefaults() *Config {
c.User.Username = "root"
c.User.Password = "password"
return c
}
func init() {
cnf.setDefaults()
_, errs := envcfg.ReadInto(&cnf)
if len(errs) != 0 {
fmt.Println(errs)
}
}
func main() {
fmt.Println(cnf)
}
Output of the previous program:
See tests for other examples.
License
This program is published under the MIT License. See the
LICENSE.txt file.