代码地址如下:
http://www.demodashi.com/demo/14411.html

简介

oozgconf基于Golang开发,用于项目中配置文件的读取以及加载,是一个轻量级的配置文件工具。

功能

  1. 配置文件读取
  2. 配置文件解析

支持配置文件格式

  • .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

代码地址如下:
http://www.demodashi.com/demo/14411.html

注:本文著作权归作者,由demo大师代发,拒绝转载,转载需要作者授权

Golang配置文件解析-oozgconf的更多相关文章

  1. golang开发:类库篇(四)配置文件解析器goconfig的使用

    为什么要使用goconfig解析配置文件 目前各语言框架对配置文件书写基本都差不多,基本都是首先配置一些基础变量,基本变量里面有环境的配置,然后通过环境变量去获取该环境下的变量.例如,生产环境跟测试环 ...

  2. MyBatis配置文件解析

    MyBatis配置文件解析(概要) 1.configuration:根元素 1.1 properties:定义配置外在化 1.2 settings:一些全局性的配置 1.3 typeAliases:为 ...

  3. Nginx安装与配置文件解析

    导读 Nginx是一款开放源代码的高性能HTTP服务器和反向代理服务器,同时支持IMAP/POP3代理服务,是一款自由的软件,同时也是运维工程师必会的一种服务器,下面我就简单的说一下Nginx服务器的 ...

  4. Hadoop配置文件解析

    Hadoop源码解析 2 --- Hadoop配置文件解析 1 Hadoop Configuration简介    Hadoop没有使用java.util.Properties管理配置文件, 也没有使 ...

  5. Python3 配置文件 解析

    /************************************************************************ * Python3 配置文件 解析 * 说明: * ...

  6. Hibernate的配置文件解析

    配置mybatis.xml或hibernate.cfg.xml报错: <property name="connection.url">jdbc:mysql://loca ...

  7. WCF中配置文件解析

    WCF中配置文件解析[1] 2014-06-14 WCF中配置文件解析 参考 WCF中配置文件解析 返回 在WCF Service Configuration Editor的使用中,我们通过配置工具自 ...

  8. haproxy之配置文件解析

    功能--> 提供高可用/负载均衡/基于tcp和http应用的代理;支持虚拟主机,特别适用于负载特大的web站点. 配置文件解析--> #配置文件-->开启/proc/net/ipv4 ...

  9. nginx源代码分析--配置文件解析

    ngx-conf-parsing 对 Nginx 配置文件的一些认识: 配置指令具有作用域,分为全局作用域和使用 {} 创建其他作用域. 同一作用域的不同的配置指令没有先后顺序:同一作用域能否使用同样 ...

随机推荐

  1. Spring初始化完成后直接执行一个方法,初始化数据(解决方法被重复执行两次的情况)

    在做WEB项目时,经常在项目第一次启动时利用WEB容器的监听.Servlet加载初始化等切入点为数据库准备数据,这些初始化数据 是系统开始运行前必须的数据,例如权限组.系统选项.默认管理员等等.但是项 ...

  2. 比較两个 List 的值是否相等

    public static <T extends Comparable<T>> boolean compare(List<T> a, List<T> b ...

  3. 微软企业库Unity学习笔记

    本文主要介绍: 关于Unity container配置,注册映射关系.类型,单实例.已存在对象和指出一些container的基本配置,这只是我关于Unity的学习心得和笔记,希望能够大家多交流相互学习 ...

  4. C/C++嵌入式开发面试题

    C/C++嵌入式开发面试题 预处理器(Preprocessor) 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEA ...

  5. bzoj 1975 [Sdoi2010]魔法猪学院

    1975: [Sdoi2010]魔法猪学院 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1758  Solved: 557[Submit][Statu ...

  6. google protocol buffer的原理和使用(二)

    本文主要会介绍怎么使用Google Protocol的Lib来序列化我们的数据,方法非常多种,本文仅仅介绍当中的三种.其它的方法读者能够通过自行研究摸索.但总的来说,序列化数据总的来说分为下面俩步: ...

  7. 纯净版xp系统在局域网共享需要密码如何解决

    纯净版xp系统在局域网共享需要密码怎么办?这是近来不少朋友都向小编反馈的问题.他们表示每次共享者更改密码后其他人都需要再重新输入密码,感觉十分的麻烦.下面是系统城小编给大家整理的一些有关XP系统局域网 ...

  8. vue设置多入口教程

    官方脚手架搭建vue项目 在src 目录下复制app内容创建test.vue,demo.vue, main.js复制main.js内容demo.js,test.js,修改一下内容 在根目录下创建tes ...

  9. [leetcode]Binary Tree Preorder Traversal @ Python

    原题地址:http://oj.leetcode.com/problems/binary-tree-preorder-traversal/ 题意:这题用递归比较简单.应该考察的是使用非递归实现二叉树的先 ...

  10. Java基础(三):修饰符、运算符、循环结构和分支结构

    一.Java修饰符: Java语言提供了很多修饰符,主要分为以下两类:访问修饰符和非访问修饰符.修饰符用来定义类.方法或者变量,通常放在语句的最前端. 1.访问控制修饰符: Java中,可以使用访问控 ...