项目通常是有很多配置信息需要存储,比如数据库的账号密码、Redis的连接地址、各种环境参数,这些配置信息通常都是写在配置文件中。
我们常用的配置文件存储格式有JSON文件、INI文件、YAML文件和TOML文件等等。
这里介绍golang读写toml配置文件, 本教程主要通过BurntSushi/toml包读写toml配置文件。
1.toml介绍
TOML 的全称是 Tom’s Obvious, Minimal Language,因为它的作者是 GitHub 联合创始人 Tom Preston-Werner。
TOML 的目标是成为一个极简的配置文件格式。
toml配置文件例子:
# toml注释
title = "TOML Example"
level = 2
[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00 # 注释可以写在这里
[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]
connection_max = 5000
enabled = true
toml配置文件格式非常灵活,可以是数字、字符串、布尔等简单类型,也可以是数组、map等等复杂的类型。
2.安装包
go get github.com/BurntSushi/toml
3.读取toml配置文件
toml配置文件:config.toml
Age = 25
Cats = [ "Cauchy", "Plato" ]
Pi = 3.14
Perfection = [ 6, 28, 496, 8128 ]
DOB = 1987-07-05T05:45:00Z
golang读取配置文件,主要就是将toml配置映射到golang struct变量中。
读取toml配置文件的例子:
package main
import (
"fmt"
"github.com/BurntSushi/toml"
"time"
)
// 我们先根据toml配置文件定义struct
// 他们的关系都是一一对应,toml配置文件定义的字段是什么类型,struct字段就是什么类型
type Config struct {
Age int
Cats []string // 对应toml配置文件中的Cats数组
Pi float64
Perfection []int
// 因为toml配置文件定义的是时间格式,可以转换成golang的time类型
DOB time.Time
}
func main() {
// 首先初始化struct对象,用于保存配置文件信息
var conf Config
// 通过toml.DecodeFile将toml配置文件的内容,解析到struct对象
if _, err := toml.DecodeFile("./config.toml", &conf); err != nil {
// handle error
}
// 可以通过conf读取配置
fmt.Println(conf.Age)
}