安装包 github.com/go-ini/ini
此包依赖于go get -u gopkg.in/ini.v1
使用说明文档:
https://ini.unknwon.io/docs/intro/getting_started
https://gowalker.org/gopkg.in/ini.v1
配置文件:conf/app.ini
[server]
# debug or release
RunMode = debug
HttpHost = 0.0.0.0
HttpPort = 8005
ReadTimeout = 60
WriteTimeout = 60
其中 [server]
被视为一个 section
。
加载配置文件
var cfg *ini.File
cfg, err := ini.Load("conf/app.ini")
读取到结构体
var ServerConfig = &Server{}
type Server struct {
RunMode string
HttpHost string
HttpPort int
ReadTimeout time.Duration
WriteTimeout time.Duration
}
func mapTo(section string, v interface{}) {
err := cfg.Section(section).MapTo(v)
if err != nil {
log.Fatalf("Cfg.MapTo %s err: %v", section, err)
}
}
mapTo("server", ServerConfig)
ServerConfig.ReadTimeout = ServerConfig.ReadTimeout * time.Second
ServerConfig.WriteTimeout = ServerConfig.WriteTimeout * time.Second
最终通过 ServerConfig.HttpHost
来访问配置项。
通过key-value的方式来读取
k, err := cfg.Section("server").GetKey("RunMode")
// 如果 key 不存在,err 会有值,需要判断一下。
value := k.String()
更多用法参考上面的文档。