你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
首页
热门
推荐
精选
登录
|
注册
Golang配置文件解析-oozgconf
立即下载
用AI写一个
该例子支持:好用才打赏哦
现在下载学习
发布时间:2018-11-09
2人
|
浏览:3382次
|
收藏
|
分享
技术:golang
运行环境:go1.10
概述
oozgconf是一个基于Golang开发的轻量配置文件加载工具,目前支持json、toml、yaml、xml等格式。
详细
### 简介 oozgconf基于Golang开发,用于项目中配置文件的读取以及加载,是一个轻量级的配置文件工具。 ### 功能 1. 配置文件读取 2. 配置文件解析 ### 支持配置文件格式 - .json - .toml - .xml - .yaml ### 安装 ``` $ go get -u github.com/usthooz/oozgconf ``` ### 实现思路 在后端项目中,配置文件已经是一个不可或缺的东西了,格式也是多种多样。 #### 流程结构 如下图所示为项目实现流程及结构: ![](/contentImages/image/20181108/EkdnhVDWFqqpHOkN0Gi.png) #### 代码目录结构 ![](/contentImages/image/20181108/YB3vrcRvpZ8omeQox57.png) #### 主要代码 - 配置文件后缀名常量定义 ``` const ( JsonSub string = "json" YamlSub string = "yaml" TomlSub string = "toml" XmlSub string = "xml" ) ``` - 对象结构 ``` type OozGconf struct { // ConfPath config file path->default: ./config/config.yaml ConfPath string // Subffix config file subffix Subffix string } ``` - 新建gconf对象 在使用时,如果不指定配置文件的路径,那么默认为./config/config.yaml,同时如果不指定文件类型,则自动通过解析文件名来获得配置文件的后缀。 ``` // NewConf new conf object func NewConf(confParam *OozGconf) *OozGconf { if len(confParam.ConfPath) == 0 { confParam.ConfPath = "./config/config.yaml" } return confParam } ``` - 获取配置 ``` /* confpath: config file path->default: ./config/config.yaml subffix: config file subffie->option */ func (oozConf *OozGconf) GetConf(conf interface{}) error { // read config file bs, err := ioutil.ReadFile(oozConf.ConfPath) if err != nil { return err } if len(oozConf.Subffix) == 0 { // get file subffix oozConf.Subffix = strings.Trim(path.Ext(path.Base(oozConf.ConfPath)), ".") } // check analy switch oozConf.Subffix { case JsonSub: err = json.Unmarshal(bs, conf) case TomlSub: err = toml.Unmarshal(bs, conf) case YamlSub: err = yaml.Unmarshal(bs, conf) case XmlSub: err = xml.Unmarshal(bs, conf) default: err = fmt.Errorf("GetConf: non support this file type...") } return err } ``` ### 使用例程 - example ``` import ( "github.com/usthooz/oozgconf" "github.com/usthooz/oozlog/go" ) type Config struct { Author string Mysql struct { User string Password string } } func main() { var ( conf Config ) // new conf object ozconf := oozgconf.NewConf(&oozgconf.OozGconf{ ConfPath: "./config.json", // 可选,默认为./config/config.yaml Subffix: "", // 可选,如果不指定则自动解析文件名获取 }) // get config err := ozconf.GetConf(&conf) if err != nil { uoozg.Errorf("GetConf Err: %v", err.Error()) } uoozg.Infof("Res: %v", conf) } ``` ### 运行结果 ![](/contentImages/image/20181108/d992Q2SelnpIG8vRNlo.png) ### 其他 没有
本实例支付的费用只是购买源码的费用,如有疑问欢迎在文末留言交流,如需作者在线代码指导、定制等,在作者开启付费服务后,可以点击“购买服务”进行实时联系,请知悉,谢谢
感谢
1
手机上随时阅读、收藏该文章 ?请扫下方二维码
相似例子推荐
评论
作者
太阳说@
购买服务
购买服务
服务描述:
辅助完成Demo运行以及设计思路解答。
服务价格:
¥1
我要联系
2
例子数量
7
帮助
2
感谢
评分详细
可运行:
4.5
分
代码质量:
4.5
分
文章描述详细:
4.5
分
代码注释:
4.5
分
综合:
4.5
分
作者例子
Golang配置文件解析-oozgconf
Golang Json文件解析为结构体工具-json2go