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  }