[Go] 轻量服务器框架全局配置的实现以及解析json
2024-09-01 21:33:13
在一个应用中经常需要有一个配置文件,可以对代码中的参数进行配置,可以使用一个json文件来对应一个struct的对象,进行全局配置
建一个conf/zinx.json作为配置文件
{
"Name":"zinxServer",
"Host":"0.0.0.0",
"TcpPort":
}
建一个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: ,
MaxConn: ,
Version:"v0.1",
MaxPackageSize: ,
}
GlobalObject.Reload()
}
最新文章
- 2013成都网络赛 C We Love MOE Girls(水题)
- 第 20 章 CSS3 前缀和 rem
- Masonry+拖动
- mysql安装过程中出现错误ERROR 1820 (HY000): You must SET PASSWORD before executing this statement解决
- 读Java Concurrency in Practice. 第六章.
- PHP+socket游戏数据统计平台发包接包类库
- PLSQL_性能优化系列08_Oracle Insert / Direct Insert性能优化
- struts2学习笔记(5)---自己定义拦截器
- android之APP+JNI+Drv框架
- linux常用命令之tail
- U磁盘检测和大量收集量产工具
- windows 编程 —— 消息与参数(定时器、初始化消息、改变大小)
- android 应用开发对大图片的处理
- 虎扯:纯css3各方向小三角的制作原理分析
- Linux下nginx生成日志自动切割
- hdu 1298 T9
- Php和httpd.conf的配置
- No bean named 'dataSource' is defined
- 百度前端学院-基础学院-第七天到第八天之BFC
- 公网FTP(filezilla)改端口