toml放弃了括号或缩进的底层原理,采用了显示键名链的方式。
为了方便,可以指定小节名(小节名也是可以链式声明的)
在互联网上传输 TOML 文件时,恰当的 MIME 类型是
application/toml
注释
使用#来表示注释开始,至当前行尾结束
# I am a comment. Hear me roar. Roar .
字符串
TOML中有4中字符串表示方法:基本、多行-基本、字面量、多行-字面量
基本字符串
由双引号包裹,所有Unicode字符均可出现,除了双引号、反斜线、控制字符(U+0000 to U+001F)需要转义
str = "I'm a string. \"You can quote me \"."
多行-基本字符串
由三个双引号包裹,除了分隔符开始的换行外,字符串内的换行将被保留
str1 = """Roses ard redViolets are blue"""
字面量字符串
由单引号包裹,其内不允许转义,因此可以方便的表示基本字符串中需要转义的内容
winpath = 'C:\Users\nodejs\templates'
多行-字面量字符串
与多行-字面量字符串
str1 = '''Roses ard redViolets are blue'''
数值与bool值
int1 = +99flt3 = -0.01bool1 = true
日期时间
date1 = 1979-05-27T07:32:00Z
数组
数组使用方括号包裹。空格会被忽略,包括换行符。元素使用括号分隔
arr1 = [ 1, 2, 3 ]arr2 = [ "red", "yellow", "green" ]arr3 = [ [ 1, 2 ], [3, 4, 5] ]
表格
表格称为哈希表或字典,用来存储键值对。表格名由方括号包裹,且自成一行
[dog]onekey = onevalue[dog.tater]type = "pug"
示例:使用toml配置文件链接数据库
toml配置文件的内容
[dbservers.test]host = "127.0.0.1"port = 5432dbname = "test"user = "loginuser"password = "123456"[dbservers.dborm]host = "127.0.0.1"port = 5432dbname = "test"user = "loginuser"password = "123456"[dbservers.dbsqlx]host = "127.0.0.1"port = 5432dbname = "test"user = "loginuser"password = "123456"[redisservers.redis]addr = "127.0.0.1:6379"password = ""db = 10
举个例子 dbservers.test。对于dbservers这个是下面配置信息中代表Config结构体中的DBServers部分。而.后面代表的则是map中的key。
config数据库的配置信息
首先toml对应的是一个Config的结构体、以下是结构体的代码
type Config struct {DBServers map[string]DBServer `toml:"dbservers"`RedisServers map[string]RedisServer `toml:"redisservers"`}// DBServer 表示DB服务器配置type DBServer struct {Host string `toml:"host"`Port int `toml:"port"`DBName string `toml:"dbname"`User string `toml:"user"`Password string `toml:"password"`}// RedisServer 表示 redis 服务器配置type RedisServer struct {Addr string `toml:"addr"`Password string `toml:"password"`DB int `toml:"db"`}
配置解析文件
可以利用github.com/bbangert/toml包对toml文件进行解析
// New 解析toml配置func New(tomlFile string) (*Config, error) {c := &Config{}if _, err := toml.DecodeFile(tomlFile, c); err != nil {return c, err}return c, nil}
