一个简单的零依赖性库,可将env Ironment变量分解为结构。
安装
go get github.com/caarlos0/ env /v11
入门
env:"HOME"`
}
// parse
var cfg config
err := env .Parse(&cfg)
// parse with generics
cfg, err := env .ParseAs[config]()\”>
type config struct { Home string ` env :\"HOME\"` } // parse var cfg config err := env . Parse ( & cfg ) // parse with generics cfg , err := env . ParseAs [ config ]()
您可以在pkg.go.dev上查看完整的文档和示例列表。
使用和支持
Encore – 构建基于GO的云后端的平台。
用法
警告
警告
env将忽略未脱颖而出的字段。这是设计,不会改变。
功能
Parse:将当前的env熨斗分解成一种类型ParseAs:使用仿制药将当前的env熨斗分解为一种类型ParseWithOptions:将当前的env熨斗分解为具有自定义选项的类型ParseAsWithOptions:将当前的env熨斗分解为具有自定义选项的类型,并使用仿制药Must:可以用来Parse.*-
GetFieldParams:获取一种类型的env分析选项 GetFieldParamsWithOptions:获取带有自定义选项的类型的env解析选项
支持类型
开箱即用,所有内置类型都得到了支持,还有一些常用的其他类型。
完整列表:
-
bool -
float32 -
float64 -
int16 -
int32 -
int64 -
int8 -
int -
string -
uint16 -
uint32 -
uint64 -
uint8 -
uint -
time.Duration -
time.Location -
encoding.TextUnmarshaler -
url.URL
还支持指针的指针,切片和切片以及这些类型的地图。
您也可以为您的类型添加自定义解析器。
标签
提供以下标签:
-
env:设置env Ironment变量名称,并选择取下下面描述的标签选项 env Default:设置字段的默认值env Prefix:可以在一个复杂类型的字段中使用,以设置所有env Ironment变量的前缀env Separator:设置用于在切片和地图中分离项目的字符(默认值:,)-
env KeyValSeparator:设置用于在地图中分离键及其值的字符(Default ::
env标签选项
以下是env标签的所有选项:
-
,expand:扩展env Ironment变量,例如FOO_${BAR} -
,file:指示该变量的内容是应读取的文件的途径 ,init:初始化零指针,notEmpty:如果env Ironment变量为空,则将字段错误,required:如果未设置env Ironment变量,则将字段错误,unset:使用后拆除env Ironment变量
解析选项
功能中有几个选项, WithOptions结束:
-
env ironment:要使用的键和值代替os. env iron() -
TagName:指定要使用的另一个标签名称,而不是默认的env -
PrefixTagName:指定要使用的另一个前缀标签名称,而不是默认的env Prefix -
DefaultValueTagName:指定要使用的另一个默认标签名称,而不是默认的env Default -
RequiredIfNoDef:如果不声明env Defaultenv -
OnSet:允许在设置值时钩住env分析并做某事 Prefix:在所有env Ironment变量中使用的前缀UseFieldNameByDefault:定义如果丢失env键,默认env默认情况FuncMap:自定义类型的自定义解析功能
文档和示例
示例在pkg.go.dev中和示例测试文件中进行。
当前状态
env被认为是功能完整的。
除非确实有意义,否则我不打算添加任何新功能,并且由许多人要求。
最终的错误修复将继续合并。
徽章
相关项目
- env doc-从
env标签生成env铁变量的文档
