Tag-based environment configuration for structs.
$ go get -u github.com/codingconcepts/envpackage main import ( "fmt""log""time""github.com/codingconcepts/env" ) typeconfigstruct{Secret []byte`env:"SECRET" required:"true"`Regionstring`env:"REGION"`Portint`env:"PORT" required:"true"`Peers []string`env:"PEERS"`// you can use `delimiter` tag to specify separator, for example `delimiter:" "` ConnectionTimeout time.Duration`env:"TIMEOUT" default:"10s"` } funcmain(){c:=config{} iferr:=env.Set(&c); err!=nil{log.Fatal(err) } ... }$ ID=1 SECRET=shh PORT=1234 PEERS=localhost:1235,localhost:1236 TIMEOUT=5s go run main.gobooland[]boolstringand[]string[]byteint,int8,int16,int32,int64,[]int,[]int8,[]int16,[]int32, and[]int64uint,uint8,uint16,uint32,uint64,[]uint,[]uint8,[]uint16,[]uint32, and[]uint64float32,float64,[]float32, and[]float64time.Durationand[]time.Duration