88# getenv
99
1010Package getenv provides functionality for loading environment variables and parse them into go builtin types.
11-
12- ## Types supported:
13-
11+ Types supported:
1412- string
1513- [ ] string
1614- int
@@ -28,3 +26,93 @@ Package getenv provides functionality for loading environment variables and pars
2826- time.Time
2927- time.Duration
3028- bool
29+
30+ ## Examples
31+
32+ ### EnvOrDefault
33+
34+ EnvOrDefault retrieves the value of the environment variable named
35+ by the key.
36+ If variable not set or value is empty - defaultVal will be returned.
37+
38+ ``` golang
39+ package main
40+
41+ import (
42+ " fmt"
43+ " os"
44+ " time"
45+
46+ " github.com/obalunenko/getenv"
47+ " github.com/obalunenko/getenv/option"
48+ )
49+
50+ func main () {
51+ key := " GH_GETENV_TEST"
52+
53+ defer func () {
54+ if err := os.Unsetenv (" GH_GETENV_TEST" ); err != nil {
55+ panic (err)
56+ }
57+ }()
58+
59+ var val any
60+
61+ // string
62+ if err := os.Setenv (key, " golly" ); err != nil {
63+ panic (err)
64+ }
65+
66+ val = getenv.EnvOrDefault (key, " golly" )
67+ fmt.Printf (" [%T ]: %v \n " , val, val)
68+
69+ // int
70+ if err := os.Setenv (key, " 123" ); err != nil {
71+ panic (err)
72+ }
73+
74+ val = getenv.EnvOrDefault (key, -99 )
75+ fmt.Printf (" [%T ]: %v \n " , val, val)
76+
77+ // time.Time
78+ if err := os.Setenv (key, " 2022-01-20" ); err != nil {
79+ panic (err)
80+ }
81+
82+ val = getenv.EnvOrDefault (key,
83+ time.Date (1992 , 12 , 1 , 0 , 0 , 0 , 0 , time.UTC ),
84+ option.WithTimeLayout (" 2006-01-02" ),
85+ )
86+ fmt.Printf (" [%T ]: %v \n " , val, val)
87+
88+ // []float64
89+ if err := os.Setenv (key, " 26.89,0.67" ); err != nil {
90+ panic (err)
91+ }
92+
93+ val = getenv.EnvOrDefault (key, []float64 {-99 },
94+ option.WithSeparator (" ," ),
95+ )
96+ fmt.Printf (" [%T ]: %v \n " , val, val)
97+
98+ // time.Duration
99+ if err := os.Setenv (key, " 2h35m" ); err != nil {
100+ panic (err)
101+ }
102+
103+ val = getenv.EnvOrDefault (key, time.Second )
104+ fmt.Printf (" [%T ]: %v \n " , val, val)
105+
106+ }
107+
108+ ```
109+
110+ Output:
111+
112+ ```
113+ [string]: golly
114+ [int]: 123
115+ [time.Time]: 2022-01-20 00:00:00 +0000 UTC
116+ [[]float64]: [26.89 0.67]
117+ [time.Duration]: 2h35m0s
118+ ```
0 commit comments