go-ini是golang ini文件操作库,也兼容其他格式,包括但不限于 my.cnf、.gitconfig
使用三方库 "gopkg.in/ini.v1"
ini文件格式语法
; 注释使用分号
; ini文件语法
env = test
; [] 分区符
[mysql]
Host = 127.0.0.1
Port = 3306
User = root
Password = 123456
Database = gin
获取ini数据
import (
"fmt"
"gopkg.in/ini.v1"
)
func main() {
// 加载指定路径的文件,返回文件对象和err
cfg, err := ini.Load("./conf/app.ini")
if err != nil {
fmt.Println("加载失败")
}
// Section传入分区名字,如果没有分区就传入空字符串,表示从根获取
// 获取根下的 env字段,默认类型是*ini.Key
cfg.Section("").Key("env") // test
// 获取根下的 env字段,并将获取到的结果转换为字符串
cfg.Section("").Key("env").String()
// 获取mysql分区的host字段,以string的类型
cfg.Section("mysql").Key("host").String()
}
写入/修改ini文件数据
cfg, _ := ini.Load("./conf/app.ini")
// 给根分区 写入 version = v1
cfg.Section("").Key("version").SetValue("v1")
// 修改mysql分区的host
cfg.Section("mysql").Key("host").SetValue("0.0.0.0")
// 保存
cfg.SaveTo("./conf/app.ini")
将ini数据映射到结构体
import (
"fmt"
"gopkg.in/ini.v1"
)
type Mysql struct {
// 结构体字段开头必现大写,并且ini的字段也需要是大写
Host string
Port int
User string
Password string
Database string
}
func main() {
var mysqlConf = new(Mysql)
cfg, _ := ini.Load("./conf/app.ini")
err := cfg.Section("mysql").MapTo(mysqlConf)
fmt.Println(err)
fmt.Print(mysqlConf.Host)
}
标签:string,配置文件,cfg,Section,ini,Key,mysql,go
From: https://www.cnblogs.com/Mickey-7/p/18053910