目录
- go-ini的分区
- go-ini的安装
- ini文件的格式
- 读取ini文件的配置项
- 直接加在ini文件,通过方法读取
- 定义结构体来存放配置项,将配置项映射到结构体中
- 父子分区
- 两份关键代码
go-ini的分区
go-inisection
go-ini的安装
go-ini/inigo env -w GOPROXY=https://goproxy.cn
下载命令:
go get github.com/go-ini/ini
ini文件的格式
ini文件以分区来划分多块配置,
默认分区必须写在任何一个命名分区的上边,多个配置项用换行符号分割。
读取ini文件的配置项
直接加在ini文件,通过方法读取
ini.load(ini文件路径)
cfgs, err := ini.Load("./conf/go-conf.ini")
if err != nil {
fmt.Println(err)
}
// cfgs是配置文件的结构体指针
读取命名分区数据:
sp := cfgs.Section()
Key()
val := cfgs.Section("kafka").Key("address").Value()
fmt.Print(val)
// 打印 : 127.0.0.1:9092
val := cfgs.Section().key().Value()
val := cfgs.Section("").Key("a").Value()
fmt.Print(val)
// 打印: 122
Value()
// 直接返回值
val := cfgs.Section("").Key("a").Value()
fmt.Print(val)
// 打印: 122
// 返回一个int类型的key值
val,err := cfgs.Section("").Key("a").Int()
if err != nil {
fmt.Print(err)
}
fmt.Print(val)
// 打印: 122
定义结构体来存放配置项,将配置项映射到结构体中
ini.MapTo()
taginitap
type KafkaConfig struct {
// ini用于给ini库做标识
Address string `ini:"address"`
}
type TailConfig struct {
Path string `ini:"path"`
Filename string `ini:"fileName"`
// 如果是结构体,则指明分区名。其他指明配置项即可
Children `ini:"tailfile.children"`
}
type Children struct {
Name string `ini:"name"`
}
type Config struct {
KafkaConfig `ini:"kafka"`
TailConfig `ini:"tailfile"`
}
func main() {
// 先实例化结构体,将指针传入MapTo方法中
var cfg = new(Config)
err := ini.MapTo(cfg, "./conf/go-conf.ini")
if err != nil {
fmt.Print(err)
}
// 取最深的配置项
fmt.Println(cfg.TailConfig.Children.Name)
}
// 运行结果: pp_mode
父子分区
go-ini
.
cfg.TailConfig.Childrentailfile.children
两份关键代码
- main.go
package main
import (
"fmt"
"github.com/go-ini/ini"
)
type KafkaConfig struct {
Address string `ini:"address"`
}
type TailConfig struct {
Path string `ini:"path"`
Filename string `ini:"fileName"`
// 如果是结构体,则指明分区名
Children `ini:"tailfile.children"`
}
type Config struct {
KafkaConfig `ini:"kafka"`
TailConfig `ini:"tailfile"`
}
type Children struct {
Name string `ini:"name"`
}
func main() {
// var cfg = new(Config)
// err := ini.MapTo(cfg, "./conf/go-conf.ini")
// if err != nil {
// fmt.Print(err)
// }
// fmt.Println(cfg.TailConfig.Children.Name)
cfgs, err := ini.Load("./conf/go-conf.ini")
if err != nil {
fmt.Println(err)
}
// val,_ := cfgs.Section("").Key("a").Int()
fmt.Print(val)
}
- go-conf.ini
a=122 [kafka] address = 127.0.0.1:9092 [tailfile] path = f:/runtime/tmp fileName = 4.log [tailfile.children] name = pp_mode