Golang配置文件解析-oozgconf
简介
oozgconf基于Golang开发,用于项目中配置文件的读取以及加载,是一个轻量级的配置文件工具。
功能
- 配置文件读取
- 配置文件解析
支持配置文件格式
- .json
- .toml
- .xml
- .yaml
安装
$ go get -u github.com/usthooz/oozgconf
实现思路
在后端项目中,配置文件已经是一个不可或缺的东西了,格式也是多种多样。
流程结构
如下图所示为项目实现流程及结构:

代码目录结构

主要代码
- 配置文件后缀名常量定义
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)
}
运行结果

其他
没有
Golang配置文件解析-oozgconf
注:本文著作权归作者,由demo大师代发,拒绝转载,转载需要作者授权
Golang配置文件解析-oozgconf的更多相关文章
- golang开发:类库篇(四)配置文件解析器goconfig的使用
为什么要使用goconfig解析配置文件 目前各语言框架对配置文件书写基本都差不多,基本都是首先配置一些基础变量,基本变量里面有环境的配置,然后通过环境变量去获取该环境下的变量.例如,生产环境跟测试环 ...
- MyBatis配置文件解析
MyBatis配置文件解析(概要) 1.configuration:根元素 1.1 properties:定义配置外在化 1.2 settings:一些全局性的配置 1.3 typeAliases:为 ...
- Nginx安装与配置文件解析
导读 Nginx是一款开放源代码的高性能HTTP服务器和反向代理服务器,同时支持IMAP/POP3代理服务,是一款自由的软件,同时也是运维工程师必会的一种服务器,下面我就简单的说一下Nginx服务器的 ...
- Hadoop配置文件解析
Hadoop源码解析 2 --- Hadoop配置文件解析 1 Hadoop Configuration简介 Hadoop没有使用java.util.Properties管理配置文件, 也没有使 ...
- Python3 配置文件 解析
/************************************************************************ * Python3 配置文件 解析 * 说明: * ...
- Hibernate的配置文件解析
配置mybatis.xml或hibernate.cfg.xml报错: <property name="connection.url">jdbc:mysql://loca ...
- WCF中配置文件解析
WCF中配置文件解析[1] 2014-06-14 WCF中配置文件解析 参考 WCF中配置文件解析 返回 在WCF Service Configuration Editor的使用中,我们通过配置工具自 ...
- haproxy之配置文件解析
功能--> 提供高可用/负载均衡/基于tcp和http应用的代理;支持虚拟主机,特别适用于负载特大的web站点. 配置文件解析--> #配置文件-->开启/proc/net/ipv4 ...
- nginx源代码分析--配置文件解析
ngx-conf-parsing 对 Nginx 配置文件的一些认识: 配置指令具有作用域,分为全局作用域和使用 {} 创建其他作用域. 同一作用域的不同的配置指令没有先后顺序:同一作用域能否使用同样 ...
随机推荐
- ExtJS创建选项卡
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- AndroidMainifest标签使用说明1——<action>
1.<action> 格式: <action android:name="string" /> 父标签: <intent-filter> 描写叙 ...
- OpenCL 获取Program信息
本程序生成一个OpenCL Program,然后获取Program的source,事实上它的source就是一个char[],能够打印出来. 然后我们把这些内容和原来文本的内容对照,看看是否是我们想要 ...
- 很酷的C语言技巧
C语言常常让人觉得它所能表达的东西非常有限.它不具有类似第一级函数和模式匹配这样的高级功能.但是C非常简单,并且仍然有一些非常有用的语法技巧和功能,只是没有多少人知道罢了. 指定的初始化 很多人都知道 ...
- poj 2585 Window Pains 解题报告
Window Pains Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2027 Accepted: 1025 Desc ...
- html调用servlet(JDBC在Servlet中的使用)(1)
1.页面的数据表单 在使用Servlet处理用户请求之前,先准备一个页面,该页面用来提供数据表单.数据表单就是HTML中的<form>...</form>部分,当用户单击Sub ...
- 3Sum Closest leetcode java
题目: Given an array S of n integers, find three integers in S such that the sum is closest to a given ...
- JavaScript数组与字符串常用方法总结
先来一段代码引子: var str='hello world'; alert(str.charAt());//通过下标查找值: alert(str.indexOf());//通过值查找字符串下标:没有 ...
- TypeError: 'newline' is an invalid keyword argument for this function 错误解决
出错代码: outputFile = open('output1.csv', 'w', newline='') # error line outputWriter = csv.writer(outpu ...
- Jmeter测试报告可视化(Excel, html以及jenkins集成)
做性能测试通常在none GUI的命令行模式下运行Jmeter. 例如: jmeter -n -t /opt/las/JMeter/TestPlan/test.jmx -l /opt/las/JMet ...