先说结论:我们选型TOML
yaml,toml,json,ini 实际业务都有用
实际栗子是:我们想要把Go的切片作为配置文件,YAML写起来比较吃力,TOML就很容易了。
配置文件是用于配置计算机程序的参数、初始化设置的文件、业务数据公共配置等。如果没有这些配置,我们的程序就会硬编码,不够灵活
配置文件的作用主要是给即将运行的程序提供初始值,凡是在环境发生改变时需要修改的选项就可以设置成配置项。
TOML 结合了 INI 和 YAML 的优点
YAML (缩进怪)
INI
JSON
XML
参考地址:github:https://github.com/toml-lang/toml
中文:https://github.com/LongTengDao/TOML/blob/龙腾道-译/toml-v1.0.0.md
# 例子
[analysis]
# 全基因分析
whole_genome = ["WGS", "childWGS", "WGS-HD"]
github:https://github.com/go-yaml/yaml
# 例子
# 项目根目录
root: "/mnt/project/bap"
# cors allow address
allow_origins:
- "http://127.0.0.1:8080"
# 批量计算及多重样本写结论并发数
analysis:
multiple_analysis: 50
multiple_write: 30
full_exon: 5
whole_genome: 5
将yaml配置内容解析到map对象中
如果不定义struct进行Unmarshal,可以直接声明一个map对象:
resultMap := make(map[string]interface{}),代替struct 结构体来进行解析。
# 例子
; A comment line
[Section]
enabled = true
path = /usr/local # another comment
# 例子
{
"enabled": true,
"path": "/usr/local"
}
# 例子
<?xml version="1.0" encoding="UTF-8" ?>
<Config>
<enabled>true</enabled>
<path>/usr/local</path>
</Config>