简介
INI是一个Go语言的ini文件操作库,支持各种文件格式,包括不限于.ini .cnf .gitconfig等等
一句语就是ini这个包,是用读取配置文件的
官方还专门弄了一个中文镜像站,方便中文区的同学查看文档,快速上手
特点:
支持覆盖加载多个数据源(file,[]byte
,io.Reader
andio.ReadCloser
)
支持递归读取键值
支持读取父子分区
支持读取自增键名
支持读取多行的键值
支持大量辅助方法
支持在读取时直接转换为 Go 语言类型
支持读取和写入分区和键的注释
轻松操作分区、键值和注释
在保存文件时分区和键值会保持原有的顺序
INI官网传送门: https://github.com/go-ini/ini
安装
因为是Go的包,提前下载也行,在代码编辑器里面 引入再同步也行,
提前下载的话命令如下:
gogetgopkg.in/ini.v1
代码编辑器引入
import("gopkg.in/ini.v1")
使用
首先我们创建一个config.ini的配置文件,大概内容如下:
app_mode=development[mysql]host=ipport=3306dbname=curdDemousername=rootpassword=666666conf=charset=utf8mb4&parseTime=True&loc=Local
然后创建一个config.go的文件来读取配置文件,并将值赋值到全局变量
使用init函数使配置文件在项目启动时加载
var(MyHoststringMyPortstringMyDBstringMyUserstringMyPassstringMyConfstringMyPath=MyHost+MyPort)funcinit(){cfg,err:=ini.Load("config.ini")iferr!=nil{log.Fatalln(err)}fmt.Println(cfg.Section("").Key("app_mode"))MyHost=cfg.Section("mysql").Key("host").String()MyPort=cfg.Section("mysql").Key("port").String()MyDB=cfg.Section("mysql").Key("dbname").String()MyUser=cfg.Section("mysql").Key("username").String()MyPass=cfg.Section("mysql").Key("password").String()MyConf=cfg.Section("mysql").Key("conf").String()}
在这里没使用app_mode,表明使用的全局
init包在调用Load方法,将返回一个File结构体,然后使用File结构体内方法Section来读取配置文件k/v
上述代码变量全部使用大写字母开头,是为了跨包调用,方便其它包路径下使用
接下来使用这些配置文件,直接在方法中调用
其中MyUser等这种My开头的全部是上面代码中定义好的变量名称
这里虽然是以mysql为例,但如果换成redis,mongo等等其它组件,操作都是一样的
funcSetupDb()*gorm.DB{dsn:=config.MyUser+":"+config.MyPass+"@tcp("+config.MyHost+":"+config.MyPort+")/"+config.MyDB+"?"+config.MyConfDb,err:=gorm.Open(mysql.Open(dsn),&gorm.Config{})iferr!=nil{log.Fatalf("数据库连接失败,错误日志:v%",err)}log.Println("mysql连接成功,配置信息:v%",dsn)Db.AutoMigrate(&model.User{})returnDb}
至此,配置读取并使用结束,,可以感受到INI这个包的强大和简单之处
除了INI包外,Go语言中常用的配置包还有很多,知名度较高的有Viper,toml,GoDotEnv,所有配置包见下图:
作者:爱吃红薯粉