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