caarlos0/env
一个零依赖的 Go 库,通过结构体标签把环境变量解析为类型化的结构体。
- Star
- 6,356
- Fork
- 299
- 未关闭 Issue
- 44
- 最近提交
- 前天
这是什么?
env 是一个 Go 库,用于从环境变量加载配置。你定义一个结构体,用 `env` 标签标注每个字段对应的变量名,再调用 Parse 或 ParseAs,即可把环境变量填充为带类型的值。该库没有外部依赖。
除了字符串和数字,它还支持 time.Duration、url.URL、time.Location、切片和映射(分隔符可配置)、带前缀的嵌套结构体、默认值,以及为自定义类型注册解析函数。标签选项包括必填与非空校验、从文件读取内容、变量展开,以及读取后取消设置变量。
项目提供基于泛型的 ParseAs 等辅助函数,并支持自定义标签名、替换环境变量来源以及在赋值时执行回调。
核心功能
- 01通过 `env` 结构体标签把环境变量解析到结构体中。
- 02支持基本数字、字符串、布尔、时长、URL 和时区类型。
- 03支持切片、映射、指针以及带前缀的嵌套结构体。
- 04提供 required、notEmpty、从文件读取和变量展开等选项。
- 05允许为自定义类型添加解析函数。
适用场景
- 在 Go 服务中从环境变量加载应用配置。
- 启动时校验必需的配置项是否已设置。
- 将容器或 12-factor 风格的配置读取为带类型的 Go 结构体。
快速上手
- 1
使用 go get 安装该库
go get github.com/caarlos0/env/v11 - 2
定义带有 env 标签的结构体,并调用 env.Parse 将环境变量加载到其中
使用前须知
- 根据设计,未导出的结构体字段会被忽略。
标签
#go#configuration#environment-variables#config-parsing#struct-tags#config#environment#golang#hacktoberfest
常见问题
- env 是什么?
- 一个零依赖的 Go 库,通过结构体标签把环境变量解析为类型化的结构体。 env 是一个 Go 库,用于从环境变量加载配置。你定义一个结构体,用 `env` 标签标注每个字段对应的变量名,再调用 Parse 或 ParseAs,即可把环境变量填充为带类型的值。该库没有外部依赖。
- env 可以免费使用吗?用的什么许可证?
- env 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- env 还在维护吗?
- 活跃维护中。env 最近一次提交是在 2026年11月5日。
- env 适合用来做什么?
- 在 Go 服务中从环境变量加载应用配置。 启动时校验必需的配置项是否已设置。 将容器或 12-factor 风格的配置读取为带类型的 Go 结构体。
- env 怎么安装和运行?
- 使用 go get 安装该库: go get github.com/caarlos0/env/v11 定义带有 env 标签的结构体,并调用 env.Parse 将环境变量加载到其中
- 在哪里获取 env?
- 源代码和安装说明在 GitHub 上:https://github.com/caarlos0/env
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
面向 Ghostty 终端的网页版可视化配置生成器,可导出精简的配置文件。
4326+3 本周85TypeScriptApache-2.0维护活跃更新于 6天前
一个零依赖的 Node.js 模块,可将 .env 文件中的环境变量加载到 process.env 中。
2.1万+4 本周983JavaScriptBSD-2-Clause维护活跃更新于 9天前
一个 Python 库,可从 .env 文件读取键值对并设置为环境变量,适用于 12-factor 应用开发。
8916+2 本周619PythonBSD-3-Clause维护活跃更新于 10天前
一个 tmux 插件,用纯 Bash 实现可定制的 Powerline 风格状态栏,由多个功能片段组成。
3846+2 本周535ShellBSD-3-Clause维护活跃更新于 30天前