Go-ini 1. 安装
也可以使用 GitHub 上的仓库:
$ go get github.com/go-ini/ini
首先,创建一个my.ini
配置文件:
app_name = awesome web # possible values: DEBUG, INFO, WARNING, ERROR, FATAL log_level = DEBUG [mysql] ip = 127.0.0.1 port = 3306 user = dj password = 123456 database = awesome [redis] ip = 127.0.0.1 port = 6381
注释:
写区
2. 使用 go.ini介绍:
功能: 读取文件参数、解析数据。
本质: 封装了go的一些读写(OS)功能。
读取 :利用load()
将ini文件读取出来。
ps.快捷键复制不同行的一些代码:ctrl+shift+alt 鼠标点就可以了
package main import ( "fmt" "os" "gopkg.in/ini.v1" ) func main() { cfg, err := ini.Load("my.ini") if err != nil { fmt.Printf("Fail to read file: %v", err) os.Exit(1) } // 典型读取操作,默认分区可以使用空字符串表示 fmt.Println("App Mode:", cfg.Section("").Key("app_mode").String()) fmt.Println("Data Path:", cfg.Section("paths").Key("data").String()) // 我们可以做一些候选值限制的操作 fmt.Println("Server Protocol:", cfg.Section("server").Key("protocol").In("http", []string{"http", "https"})) // 如果读取的值不在候选列表内,则会回退使用提供的默认值 fmt.Println("Email Protocol:", cfg.Section("server").Key("protocol").In("smtp", []string{"imap", "smtp"})) // 试一试自动类型转换 fmt.Printf("Port Number: (%[1]T) %[1]d\n", cfg.Section("server").Key("http_port").MustInt(9999)) fmt.Printf("Enforce Domain: (%[1]T) %[1]v\n", cfg.Section("server").Key("enforce_domain").MustBool(false)) // 差不多了,修改某个值然后进行保存 cfg.Section("").Key("app_mode").SetValue("production") cfg.SaveTo("my.ini.local") }
运行程序,我们可以看下以下输出:
$ go run main.go App Mode: development Data Path: /home/git/grafana Server Protocol: http Email Protocol: smtp Port Number: (int) 9999 Enforce Domain: (bool) true $ cat my.ini.local app_mode = production [paths] data = /home/git/grafana ...