跳到主要内容

env

简单易用的环境变量操作库。

Init

初始化库,加载运行目录下的 .env 文件。

函数签名:

func Init(root ...string) error

我们可以通过参数 root 支持 .env 文件所在的目录,不指定就使用当前程序的运行目录。

InitWithDir

加载指定录下的 .env 文件.

func InitWithDir(dir string) (err error)

Load

加载指定的环境变量文件

func Load(filenames ...string) error

Signed

返回签名查询器 Signer

func Signed(prefix, category string) Signer

路径

基于初始化给出的目录合并参数,返回目标路径

func Path(path ...string) string

IsEnv

检查环境变量 APP_ENV 的值是否与给出的一致。

func IsEnv(env string) bool

Lookup

查看环境变量值:

  • 参数 name 表示环境变量名;
  • 第二个返回值表示是否存在 name 对用的值。
func Lookup(name string) (string, bool) 

Exists

检测环境变量是否存在

func Exists(name string) bool

取值函数

// String 返回指定键的数据的字符串形式,当数据不存在或值为空时返回默认值
func String(name string, fallback ...string) string
// Bytes 返回指定键的数据的字节切片值,当数据不存在或值为空时返回默认值
func Bytes(name string, fallback ...[]byte) []byte
// Int 返回指定键的数据的整数值,当数据不存在或值为空时返回默认值
func Int(name string, fallback ...int)
// Duration 返回指定键的数据的时长值,当数据不存在或值为空时返回默认值
func Duration(name string, fallback ...time.Duration) time.Duration
// Bool 返回指定键的数据的布尔值,当数据不存在或值为空时返回默认值
func Bool(name string, fallback ...bool) bool
// List 返回指定键的数据的字符串列表(使用英文逗号分割),当数据不存在或值为空时返回默认值
func List(name string, fallback ...[]string) []string
// Map 将具体相同前缀的键的数据聚合起来返回
func Map(prefix string) map[string]string
// Where 返回通过自定义函数过滤的数据
func Where(filter func(name string, value string) bool) map[string]string
// Fill 将环境变量填充到指定结构体
func Fill(structure any) error
// All 返回所有值
func All() map[string]string

签名查询器接口

接口格式如下

type Signer interface {
// Lookup 返回指定键的数据,只有存在指定的环境变量并且其值不为空时,
// 第二个返回值为 true,其它情况下,均返回 false,与方法 Exists 有所区别。
Lookup(key string) (string, bool)
// Exists 判断指定键的数据是否存在
// 只要存在键名就返回 true,不存在返回 false。
Exists(key string) bool
// String 返回指定键的数据的字符串形式,当数据不存在或值为空时返回默认值
String(key string, fallback ...string) string
// Bytes 返回指定键的数据的字节切片值,当数据不存在或值为空时返回默认值
Bytes(key string, fallback ...[]byte) []byte
// Int 返回指定键的数据的整数值,当数据不存在或值为空时返回默认值
Int(key string, fallback ...int) int
// Duration 返回指定键的数据的时长值,当数据不存在或值为空时返回默认值
Duration(key string, fallback ...time.Duration) time.Duration
// Bool 返回指定键的数据的布尔值,当数据不存在或值为空时返回默认值
Bool(key string, fallback ...bool) bool
// List 返回指定键的数据的字符串列表(使用英文逗号分割),当数据不存在或值为空时返回默认值
List(key string, fallback ...[]string) []string
// Map 将具体相同前缀的键的数据聚合起来返回
Map(prefix string) map[string]string
// Where 返回通过自定义函数过滤的数据
Where(filter func(name, value string) bool) map[string]string
// Fill 使用环境变量填充结构体
Fill(structure any) error
}

用于操作相同前缀但需要区分不同场景的环境变量时十分有用,比如我们通过环境变量文件配置缓存配置:

CACHE_DRIVER=redis
CACHE_DATABASE=1
CACHE_SCOPE=app:
CACHE_BOOK_DATABASE=10
CACHE_BOOK_SCOPE=app:books:

那么我们就可以十分方便的使用:

cache := env.Signed("CACHE", "BOOK")
cache.String("DRIVER") // redis
cache.Int("DATABASE") // 10
cache.String("SCOPE") // app:books:

这样就方便我们对环境变量简单分组分场景使用了。