Loading

go-ini配置文件操作

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)
}
posted @ 2024-03-05 13:57  木子七  阅读(128)  评论(0编辑  收藏  举报