概述
本篇仅引用部分,更多内容请参见原文
配置工具的选择
但我们又遇到了一个问题,一个项目通常是有很多配置的,比如PHP的php.ini文件、Nginx的server.conf文件,那么Golang的项目又适合使用怎样的配置文件呢?
其实现在我们有很多选择,比如 JSON文件、INI文件、YAML文件和TOML文件等等。
其中这些文件,对应的Golang处理库如下:
- encoding/json – 标准库中的包,可以处理JSON配置文件,缺点是不能加注释
- gcfg – 处理INI配置文件
- toml – 处理TOML配置文件
- viper – 处理JSON, TOML, YAML, HCL以及Java properties配置文件
其实关于怎么选择可以看看stackoverflow上的问题How to handle configuration in Go。
toml的使用
我根据自己的喜好选了toml,下面就来说下toml。
先来看一个TOML文件的例子:
# This is a TOML document.
title = "TOML Example"
[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00 # First class dates
[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]
connection_max = 5000
enabled = true
[servers]
# Indentation (tabs and/or spaces) is allowed but not required
[servers.alpha]
ip = "10.0.0.1"
dc = "eqdc10"
[servers.beta]
ip = "10.0.0.2"
dc = "eqdc10"
[clients]
data = [ ["gamma", "delta"], [1, 2] ]
# Line breaks are OK when inside arrays
hosts = [
"alpha",
"omega"
]
大家可以看到这里的格式非常灵活,可以是数字、字符串、布尔等简单类型,也可以是数组、map等等复杂的类型。
关于具体的TOML语言的解说大家查看文档 《toml-lang/toml》