1.3 KiB
1.3 KiB
统一配置加载示例
从框架根目录运行,无需数据库或外部服务:
go run ./examples/configuration
go run ./examples/configuration -format json
go run ./examples/configuration -format xml
DEMO_CLIENT_TIMEOUT=500ms DEMO_MAX_ITEMS=0 go run ./examples/configuration
DEMO_MAX_ITEMS=wrong go run ./examples/configuration
前三次都输出 timeout=2s maxItems=100 allowed=[json xml]。文件显式引用允许零值。
最后一条输出定位 maxItems / DEMO_MAX_ITEMS 的安全错误,不打印输入原值。
也可 -config /path/to/app.yaml 读取自己的文件。示例没有建立网络连接。
Config 定义字段,Default() 定义初始值,Validate 用 config.Invalid 返回字段与公开原因。
文件中的 ${NAME} 必填,${NAME:-value} 支持空/未设置的备用值,$${NAME} 保留字面量;字符串不裁剪,也不二次展开。没有出现在文件引用中的变量不会被读取。
newLoader 额外注册 .custom(演示复用 JSON decoder);同一个 load 可读取所有格式。
JSON/YAML/XML 直接可用,无需注册。新增格式只修改解析器注册,不改业务结构或校验。
只打印选定非敏感字段,不输出整个配置。完整格式、错误定位和旧项目迁移见 CONFIG.md。