Repolode
caarlos0

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. 1

    使用 go get 安装该库

    go get github.com/caarlos0/env/v11
  2. 2

    定义带有 env 标签的结构体,并调用 env.Parse 将环境变量加载到其中

使用前须知

  • 根据设计,未导出的结构体字段会被忽略。

标签

常见问题

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 数据每日更新。

相关项目