首页>>后端>>Golang->INI:超赞的Go语言INI文件操作

INI:超赞的Go语言INI文件操作

时间:2023-11-29 本站 点击:0

简介

INI是一个Go语言的ini文件操作库,支持各种文件格式,包括不限于.ini .cnf .gitconfig等等

一句语就是ini这个包,是用读取配置文件的

官方还专门弄了一个中文镜像站,方便中文区的同学查看文档,快速上手

特点:

支持覆盖加载多个数据源(file,[]byte,io.Readerandio.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,所有配置包见下图:

作者:爱吃红薯粉


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Golang/271.html