golang 开源项目: 配置解析模块--config
在golang中,配置文件经常使用json格式。json格式的语法,有些繁琐,尤其是出现嵌套的时候,每一块都需要大括号包裹,看起来很臃肿。
本着简单易用的原则,个人开发了一个配置解析模块config,已在github开源。
下面介绍配置解析模块config的语法和使用方法。
基本语法
基本字符定义如下:
# 注释
= key=value, 赋值
[] 区域,可以表示一个结构体
[[]] 区域的数组,表示结构体的数组
使用tab进行缩进,每缩进一个tab,就表示嵌套一级。
配置文件示例:
#comment like this
host = example.com
ipaddr = 192.168.1.56
port = 43
compression = on
max_conn = 68182
port_enable = true
order = 98, 652, 31, 599, 566, 12, 208
[monitor]
enabled = true
ip = 192.168.1.161
[MAC]
mac1 = AA:BB:CC
mac2 = DD:EE:FF
port = 3698
cluster = 127.0.0.1, 192.168.16.163
[portal]
enabled =true
ip = 192.168.8.198
port = 3036
#array
[[cluster]]
addr = 10.0.1.160
wgh = 20
[[cluster]]
addr = 10.12.201.187
wgh = 10
废话不多说,直接看例子。
安装
go get github.com/yangeagle/config
例子
例子配置文件simple.conf:
#comment like this
host = example.com
ipaddr = 192.168.1.56
port = 43
compression = on
#comment like this
height = 8848.16, 693.254, 1.230, 996
# google
active = false
#array
cluster = 192.168.8.171, 192.168.8.170, 192.168.8.156
distance = 1896
temprature = 90.88
top_level = 9123456
max_conn = 68182
order = 98, 652, 31, 599, 566, 12, 208
示例代码:
package main
import (
"fmt"
"github.com/yangeagle/config"
)
type ConfigOption struct {
Hostname string `config:"host"`
Addr string `config:"ipaddr"`
PortNum int `config:"port"`
Height []float32 `config:"height"`
Active bool `config:"active"`
Clusters []string `config:"cluster"`
Dist int `config:"distance"`
Temp float64 `config:"temprature"`
TopLevel *int `config:"top_level"`
NumConn int `config:"max_conn"`
Order []int `config:"order"`
}
const configFile = "simple.conf"
func main() {
confParser := config.NewConfig()
err := confParser.ParseFile(configFile)
if err != nil {
fmt.Println("ParseFile failed:", err)
return
}
confOption := new(ConfigOption)
err = confParser.Unmarshal(confOption)
if err != nil {
fmt.Println("Unmarshal failed:", err)
return
}
fmt.Println("Hostname:", confOption.Hostname)
fmt.Println("Addr:", confOption.Addr)
fmt.Println("Port:", confOption.PortNum)
fmt.Println("Height:", confOption.Height)
fmt.Println("Active:", confOption.Active)
fmt.Println("Clusters:", confOption.Clusters)
fmt.Println("Dist:", confOption.Dist)
fmt.Println("Temp:", confOption.Temp)
fmt.Println("TopLevel:", *confOption.TopLevel)
fmt.Println("NumConn:", confOption.NumConn)
fmt.Println("Order:", confOption.Order)
}
以上是配置解析模块代码库config使用方法,如果想了解更多,请访问项目地址:https://github.com/yangeagle/config
欢迎使用,如果你觉得不错,欢迎加星:)
golang 开源项目: 配置解析模块--config的更多相关文章
- Golang优秀开源项目汇总, 10大流行Go语言开源项目, golang 开源项目全集(golang/go/wiki/Projects), GitHub上优秀的Go开源项目
Golang优秀开源项目汇总(持续更新...)我把这个汇总放在github上了, 后面更新也会在github上更新. https://github.com/hackstoic/golang-open- ...
- .NET大型B2C开源项目nopcommerce解析——项目结构
.NET大型B2C开源项目nopcommerce解析——项目结构 编写本文档是为了向程序员说明nopcommerce的解决方案结构,亦是程序员开发nopcommerce的居家必备良书.首先nopcom ...
- golang开源项目qor快速搭建网站qor-example运行实践
最近想找几个基于Go语言开发的简单的开源项目学习下,分享给大家,github上有心人的收集的awesome-go项目集锦:github地址 发现一个Qor项目: Qor 是基于 Golang 开发的的 ...
- vue-cli的webpack模版项目配置解析
上一篇文章已经分析了build/dev-server.js,里面使用到了其他config文件. 那么我们这篇文章,按着dev-server.js的使用顺序,来分析下其他文件. 首选,调用check-v ...
- Android开源项目xUtils HttpUtils模块分析(转)
xUtils是github上的一个Android开源工具项目,其中HttpUtils模块是处理网络连接部分,刚好最近想整理下Android网络编程知识,今天学习下xUtils中HttpUtils. x ...
- Golang开源项目
谷歌官方维护了一个基于go语言的开源项目列表: https://github.com/golang/go/wiki/Projects 其中有非常多的优秀项目值得学习,有几百行代码适合新手阅读的项目,也 ...
- Android 开源项目android-open-project解析之(二) GridView,ImageView,ProgressBar,TextView
五.GridView StaggeredGridView 同意非对齐行的GridView,类似Pinterest的瀑布流.而且跟ListView一样自带View缓存,继承自ViewGroup 项目地址 ...
- vue-cli的webpack模版项目配置解析-build/dev-server.js
我们在使用vue-cli搭建vuejs项目(Vuejs实例-01使用vue-cli脚手架搭建Vue.js项目)的时候,会自动生成一系列文件,其中就包含webpack配置文件.我们现在来看下,这些配置到 ...
- Go语言(golang)开源项目大全
转http://www.open-open.com/lib/view/open1396063913278.html内容目录Astronomy构建工具缓存云计算命令行选项解析器命令行工具压缩配置文件解析 ...
随机推荐
- 丑陋的 shell 来一遍
学习使人进步,好记性不如烂笔头 在线正则 在线正则 ^(.)(.).*?\2\1$ 正式开始总结 cat 反过来读取文件 tac file.txt nl --> number line 如 ca ...
- eclipse导入myeclipse中的项目(如何把Webroot改为WebContent)
1.进入项目目录,找到.project文件,打开. 2.找到…代码段. 3.在第2步的代码段中加入如下标签内容并保存: org.eclipse.wst.common.project.facet.cor ...
- 1.什么是bat文件
bat文件是dos下的批处理文件.批处理文件是无格式的文本文件,它包含一条或多条命令.它的文件扩展名为 .bat 或 .cmd. 在命令提示下输入批处理文件的名称,或者双击该批处理文件,系统就会调用c ...
- CentOS MySql5.6编译安装
生产环境中,mysql服务器上边最好什么服务都不要再安装!!! 一.准备工作: # yum -y install make gcc-c++ cmake bison-devel ncurses-deve ...
- shell条件嵌套(if条件语句)
[注意1]:和Java.PHP等语言不一样,sh的流程控制不可为空,如: 代码如下: <?php if (isset($_GET["q"])) { search(q); } ...
- filepath:处理文件路径的一把好手
1.ToSlash(path string) string 将相关平台的路径分隔符转为/ package main import ( "fmt" "os" &q ...
- 自学Python6.5-内置模块(re、collections )
自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...
- Spring Boot热部署插件
在实际开发中,我们修改某些代码逻辑功能或页面都需要重启应用,这无形中降低了开发效率,热部署是指当我们修改代码后,服务能自动重启加载新修改的内容,而不需要重启应用,这样大大提高了我们开发的效率. Spr ...
- [uboot] (番外篇)uboot之fdt介绍 (转)
以下例子都以project X项目tiny210(s5pv210平台,armv7架构)为例 [uboot] uboot流程系列:[project X] tiny210(s5pv210)上电启动流程(B ...
- Spring MVC Theme(简单示例)
在渲染视图的spring-web中,配置them. 实现两个接口就可以使用: ResourceBundleThemeSource --> 用于确定要使用的主题的名字(theme name) S ...