在一個應用中常常須要有一個配置文件,能夠對代碼中的參數進行配置,可使用一個json文件來對應一個struct的對象,進行全局配置json
建一個conf/zinx.json做爲配置文件函數
{ "Name":"zinxServer", "Host":"0.0.0.0", "TcpPort":8888 }
建一個utils/GlobalObj.go utils包,好比下面這個spa
func init()函數能夠在導包的同時被執行,而且在這個裏面聲明一個全局變量做爲數據存儲var GlobalObject *GlobalObjcode
使用ioutil.ReadFile能夠直接讀取文件對象
使用json.Unmarshal能夠直接解析json格式而且對應一個struct , key要一致得對應好blog
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() }