通过go-ini加载.ini配置文件

513 阅读1分钟

1、介绍

1.1 什么是go-ini

go-ini超赞的Go语言INI文件操作。地表 最强大最方便最流行 的 Go 语言 INI 文件操作库。

官方网站:ini.unknwon.io/

GitHub地址:github.com/go-ini/ini

1.2 功能特性

  • 支持覆盖加载多个数据源(file, []byte, io.Reader and io.ReadCloser
  • 支持递归读取键值
  • 支持读取父子分区
  • 支持读取自增键名
  • 支持读取多行的键值
  • 支持大量辅助方法
  • 支持在读取时直接转换为 Go 语言类型
  • 支持读取和 写入 分区和键的注释
  • 轻松操作分区、键值和注释
  • 在保存文件时分区和键值会保持原有的顺序

1.3 下载安装

go get gopkg.in/ini.v1

2、使用

官方使用文档:ini.unknwon.io/docs/intro/…

2.1 在项目中创建配置文件

创建一个配置文件conf/app.ini

app_name  = memorandum
# possible values: DEBUG, INFO, WARNING, ERROR, FATAL
log_level = DEBUG
app_mode  = dev

[mysql]
ip       = 192.168.5.231
protocol = tcp
port     = 13306
user     = root
password = password
database = gin

[redis]
ip       = 192.168.5.231
port     = 6379
password = password

[server]
port = 9000

2.2 配置go-ini读取配置文件

main.go

package main

import (
    "fmt"
    "gopkg.in/ini.v1"
)

func main() {
    cfg, err := ini.Load("conf/app.ini")
	if err != nil {
		fmt.Printf("Failed to read file %v\n", err)
		os.Exit(1)
	}

	// 典型读取操作
	fmt.Println("app name:", cfg.Section("").Key("app_name").String())
	fmt.Println("mysql host:", cfg.Section("mysql").Key("ip").String())
	fmt.Println("redis port:", cfg.Section("redis").Key("port").String())
}

2.3 go-ini写入配置到文件

main.go

package main

import (
    "fmt"
    "gopkg.in/ini.v1"
)

func main() {
    cfg, err := ini.Load("conf/app.ini")
	if err != nil {
		fmt.Printf("Failed to read file %v\n", err)
		os.Exit(1)
	}

	// 写入配置到文件
	cfg.Section("").Key("app_mode").SetValue("dev")
	cfg.Section("server").Key("port").SetValue("9000")
	cfg.SaveTo("conf/app.ini")
}