在一个应用中经常需要有一个配置文件,可以对代码中的参数进行配置,可以使用一个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()
}

最新文章

  1. 2013成都网络赛 C We Love MOE Girls(水题)
  2. 第 20 章 CSS3 前缀和 rem
  3. Masonry+拖动
  4. mysql安装过程中出现错误ERROR 1820 (HY000): You must SET PASSWORD before executing this statement解决
  5. 读Java Concurrency in Practice. 第六章.
  6. PHP+socket游戏数据统计平台发包接包类库
  7. PLSQL_性能优化系列08_Oracle Insert / Direct Insert性能优化
  8. struts2学习笔记(5)---自己定义拦截器
  9. android之APP+JNI+Drv框架
  10. linux常用命令之tail
  11. U磁盘检测和大量收集量产工具
  12. windows 编程 —— 消息与参数(定时器、初始化消息、改变大小)
  13. android 应用开发对大图片的处理
  14. 虎扯:纯css3各方向小三角的制作原理分析
  15. Linux下nginx生成日志自动切割
  16. hdu 1298 T9
  17. Php和httpd.conf的配置
  18. No bean named 'dataSource' is defined
  19. 百度前端学院-基础学院-第七天到第八天之BFC
  20. 公网FTP(filezilla)改端口

热门文章

  1. CSU-2018
  2. USB视频采集系统 视频测试软件将正式发布(方便调试测试各自摄像头,RAW,RGB,YUV)
  3. Python3 文件处理
  4. Docker私有仓库搭建与界面化管理
  5. Shell排序 C&&C++
  6. IDEA2019.3安装和激活
  7. iview表单验证trigger:'change,blur'
  8. 【ES6基础】字符串扩展
  9. 一个我经常用到的采集网页数据抓取网页获取数据的PHP函数类
  10. 《Java练习题》进阶练习题(五)