只需两个函数调用,就可以将您的应用程序配置作为类型安全的结构进行管理。

键入 的myconfig 结构{
DatabaseUrl 字符串

配置: “DATABASE_URL”

FeatureFlag 布尔
配置: “FEATURE_FLAG”

端口 INT //标签是可选的。假定端口

}

var c MyConfig
err := config。FromEnv()。到(&c)
怎么运行的
这只是简单的纯stdlib。

字段的类型确定调用什么strconv函数。

所有字符串转换规则均在strconv软件包中定义

time.Duration遵循相同的解析规则time.ParseDuration

如果链接多个数据源,则将合并数据集。以后的值将覆盖以前的值。

配置。从(“ dev.config”)。FromEnv()。到(&c)
未设置的值保持不变或保持其原始零值

嵌套的结构/子配置用双下划线定界

例如 PARENT__CHILD
Env vars不区分大小写地映射到结构域

注意:使用struct标记时也是如此。
遇到的任何错误都会汇总到一个错误值中

总是尝试整个结构
失败的转换(即将“ x”转换为int)和文件I / O是唯一的错误源
缺失值不是错误
为什么要使用这个
这是管理配置的云原生方法。查看12因子应用
简单的:
仅需配置两行。
可组合:
合并本地文件和环境变量以轻松进行本地开发。
小的:
只有stdlib
<180位置
设计哲学
固执己见,范围狭窄。该库仅用于进行配置绑定。可以单独使用它,也可以与其他库一起使用。

仅在入口点使用结构。这样可以使API的表面较小。

切片是用空格分隔的。这与gocmd处理环境变量和命令行参数的方式匹配。

没有切片的结构。对于这样的利基用例,并不需要额外的复杂性。

没有地图。在此用例中,未由结构处理的映射的唯一功能是动态键。

没有指针成员。如果您真的需要一个,只需获取部分结构的地址即可。