[Go] 輕量服務器框架全局配置的實現以及解析json

在一個應用中常常須要有一個配置文件,能夠對代碼中的參數進行配置,可使用一個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()
}
相關文章
相關標籤/搜索