github.com/lingyao2333/mo-zero@v1.4.1/core/proc/env.go (about) 1 package proc 2 3 import ( 4 "os" 5 "strconv" 6 "sync" 7 ) 8 9 var ( 10 envs = make(map[string]string) 11 envLock sync.RWMutex 12 ) 13 14 // Env returns the value of the given environment variable. 15 func Env(name string) string { 16 envLock.RLock() 17 val, ok := envs[name] 18 envLock.RUnlock() 19 20 if ok { 21 return val 22 } 23 24 val = os.Getenv(name) 25 envLock.Lock() 26 envs[name] = val 27 envLock.Unlock() 28 29 return val 30 } 31 32 // EnvInt returns an int value of the given environment variable. 33 func EnvInt(name string) (int, bool) { 34 val := Env(name) 35 if len(val) == 0 { 36 return 0, false 37 } 38 39 n, err := strconv.Atoi(val) 40 if err != nil { 41 return 0, false 42 } 43 44 return n, true 45 }