在一個應用中經常需要有一個配置文件,可以對代碼中的參數進行配置,可以使用一個json文件來對應一個struct的對象,進行全局配置 建一個conf/zinx.json作為配置文件 建一個utils/GlobalObj.go utils包,比如下麵這個 func init()函數可以在導包的同時被執行 ...
在一個應用中經常需要有一個配置文件,可以對代碼中的參數進行配置,可以使用一個json文件來對應一個struct的對象,進行全局配置
建一個conf/zinx.json作為配置文件
{ "Name":"zinxServer", "Host":"0.0.0.0", "TcpPort":8888 }
建一個utils/GlobalObj.go utils包,比如下麵這個
func init()函數可以在導包的同時被執行,並且在這個裡面聲明一個全局變數作為數據存儲var GlobalObject *GlobalObj
使用ioutil.ReadFile可以直接讀取文件
使用json.Unmarshal可以直接解析json格式並且對應一個struct , key要一致得對應好
package utils import "io/ioutil" import "log" import "encoding/json" type GlobalObj struct{ Name string Host string TcpPort int MaxConn int Version string MaxPackageSize int } var GlobalObject *GlobalObj func (g *GlobalObj)Reload(){ confFile:="conf/zinx.json" data,err:=ioutil.ReadFile(confFile) if err!=nil{ log.Println("reload conf err ",err) } err=json.Unmarshal(data,GlobalObject) if err!=nil{ log.Println("json unmarshal err ",confFile,err) } } func init(){ GlobalObject=&GlobalObj{ Name:"zinx", Host:"0.0.0.0", TcpPort: 8999, MaxConn: 1000, Version:"v0.1", MaxPackageSize: 4096, } GlobalObject.Reload() }