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)
}

作者:木子七

出处:https://www.cnblogs.com/Mickey-7/p/18053910

posted @   木子七  阅读(331)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示
workspaces
keyboard_arrow_up dark_mode palette
选择主题
menu