一个小巧的配置库,支持从文件(YAML/TOML/JSON)和环境变量中加载配置信息。
- gorm 作者的作品
- 只有 yaml.v3 和 toml 两个依赖。
介绍
基本用法
以 yaml 为例。
配置文件:
application:
mode: dev
host: 0.0.0.0
name: testApp
port: 8000
logger:
path: temp/logs
stdout: ""
level: trace
代码:
package main
import (
"github.com/jinzhu/configor"
)
func YamlConfig(filepath string) *Config{
conf := &Config{}
configor.Load(conf, filepath)
return conf
}
func TomlConfig(filepath string) *Config{
conf := &Config{}
configor.Load(conf, filepath)
return conf
}
环境变量
yaml vs toml
就是对上面示例的脚本进行性能简单测试,这是结果:
goos: windows
goarch: amd64
pkg: hello
cpu: 12th Gen Intel(R) Core(TM) i7-12700H
BenchmarkYamlConfig-20 4009 370774 ns/op 47749 B/op 698 allocs/op
BenchmarkTomlConfig-20 3136 336632 ns/op 49480 B/op 761 allocs/op
按照之前对 YAML 和 TOML 的性能分析,应该是 YAML 解码性能好一点点,TOML 编码性能好一点点。
但是在这个测试里面,测试了几次,都是 TOML 配置文件解析速度快一点点。
PS:我始终对设计复杂的 YAML 心怀畏惧,还是简单的 TOML 更放心一些。
PS:TOML 就是层级难看,不像 YAML 强制缩进(这一点我倒是挺喜欢,但也有一些人认为是来自 Python 的“歪风邪气”)。