先說結(jié)論:我們選型TOML
yaml,toml,json,ini 實際業(yè)務(wù)都有用
實際栗子是:我們想要把Go的切片作為配置文件,YAML寫起來比較吃力,TOML就很容易了。
配置文件是用于配置計算機程序的參數(shù)、初始化設(shè)置的文件、業(yè)務(wù)數(shù)據(jù)公共配置等。如果沒有這些配置,我們的程序就會硬編碼,不夠靈活
配置文件的作用主要是給即將運行的程序提供初始值,凡是在環(huán)境發(fā)生改變時需要修改的選項就可以設(shè)置成配置項。
配置文件流行分為這幾類
-
TOML 結(jié)合了 INI 和 YAML 的優(yōu)點
- TOML 的寫法和 ini 幾乎一致,切換成本為 0 ;
- 支持所有的 YAML 數(shù)據(jù)類型,甚至支持時間格式;
- 支持像 ini 的 section 分組,只是在 TOML 中,它叫做 table;
- 解析像 YAML 那樣簡單。
- 支持bool、int、float、字符串、字符串?dāng)?shù)組
-
YAML (縮進怪)
- 容易閱讀和修改,支持注釋。
- 支持豐富的數(shù)據(jù)類型,對象、數(shù)組、純量
- 對象:鍵值對的集合,又稱為映射(mapping)/ 哈希(hashes) / 字典(dictionary)
- 數(shù)組:一組按次序排列的值,又稱為序列(sequence) / 列表(list)
- 純量(scalars):單個的、不可再分的值;字符串、bool、int、float、Null、時間、日期
- 不同格式的明確表達。
- 強制縮進。雖然不規(guī)定具體縮進幾個空格,但是同一級的內(nèi)容要保持相同的縮進。
- 冒號后面一定要加空格,否則無法解析。
-
INI
- 比較適合配置項的數(shù)據(jù)類型只是簡單的字符串、數(shù)字的情況,如果涉及數(shù)組和 key/value 的嵌套,會比較吃力。
- section 無法嵌套, 嵌套后的效果和沒有嵌套是一樣的。
- 字符串的表示不要加引號,否則引號也會被解析出來。
-
JSON
- 不支持注釋
- 花括號多,影響可讀性
-
XML
- 業(yè)務(wù)不常用
什么要的配置文件格式是好格式
- 容易閱讀和修改、最好支持注釋。 所以 json 不是一種好的格式。
- 易于解析,支持多數(shù)據(jù)類型。 INI 和 xml 不合適。
- 不同格式用不同的表達。 YAML 和 TOML 做得非常好。
針對各自的使用做示例和對比
TOML
參考地址:github:https://github.com/toml-lang/toml
中文:https://github.com/LongTengDao/TOML/blob/龍騰道-譯/toml-v1.0.0.md文章來源:http://www.zghlxwxcb.cn/news/detail-799715.html
# 例子
[analysis]
# 全基因分析
whole_genome = ["WGS", "childWGS", "WGS-HD"]
YAML
github:https://github.com/go-yaml/yaml文章來源地址http://www.zghlxwxcb.cn/news/detail-799715.html
# 例子
# 項目根目錄
root: "/mnt/project/bap"
# cors allow address
allow_origins:
- "http://127.0.0.1:8080"
# 批量計算及多重樣本寫結(jié)論并發(fā)數(shù)
analysis:
multiple_analysis: 50
multiple_write: 30
full_exon: 5
whole_genome: 5
將yaml配置內(nèi)容解析到map對象中
如果不定義struct進行Unmarshal,可以直接聲明一個map對象:
resultMap := make(map[string]interface{}),代替struct 結(jié)構(gòu)體來進行解析。
INI
# 例子
; A comment line
[Section]
enabled = true
path = /usr/local # another comment
JSON
# 例子
{
"enabled": true,
"path": "/usr/local"
}
XML
# 例子
<?xml version="1.0" encoding="UTF-8" ?>
<Config>
<enabled>true</enabled>
<path>/usr/local</path>
</Config>
到了這里,關(guān)于Go新項目-配置文件的選取及區(qū)別和寫法(1)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!