TOC

jinzhu/configor:Golang 配置文件工具库

一个小巧的配置库,支持从文件(YAML/TOML/JSON)和环境变量中加载配置信息。

  1. gorm 作者的作品
  2. 只有 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 的“歪风邪气”)。