golang使用yaml格式解析构建配置文件
现在主流的配置文件格式有这么几种,xml、yaml、config… xml就算了,太挫了,太土, 太繁琐… config 就是mysql,apache my.cnf的那种格式,这个格式适合功能分层,不适合写同级的配置端.
yaml是我最喜欢的配置格式,像ansible、saltstack、puppet都是使用yaml来做配置格式.
我在以前的公司开发的平台系统用的都是yaml格式. 简练,充满张力 !!!
我在python中只用yaml格式,在golang中当然也会优先选择这门配置语言. 又废话了.
话说golang关于yaml的库包在github中能找到好几个,但有些yaml功能包光看那奇葩的库包名就觉得不靠谱. 说到这里我又要喷golang的库包管理了,你丫就不能整个类似pypi服务… 说实话我真的害怕作者提交新功能,然后导致整个库包都不能使用。
这个是我使用的go yaml包,star关注值还不低 . https://github.com/go-yaml/yaml
废话不多说了,直接上yaml的例子。 我在代码里参杂了yaml.v2库的使用方法.
跟golang处理json结构一样,yaml的格式也是需要用struct结构体反射的. struct里的字段首字母最好是大写,yaml string到时无所谓.
#http://xiaorui.cc
package main import (
"fmt"
"log" "gopkg.in/yaml.v2"
) var data = `
blog: xiaorui.cc
best_authors: ["fengyun","lee","park"]
desc:
counter: 521
plist: [3, 4]
` type T struct {
Blog string
Authors []string `yaml:"best_authors,flow"`
Desc struct {
Counter int `yaml:"Counter"`
Plist []int `yaml:",flow"`
}
} func main() {
t := T{}
//把yaml形式的字符串解析成struct类型
err := yaml.Unmarshal([]byte(data), &t)
//修改struct里面的记录
t.Blog = "this is Blog"
t.Authors = append(t.Authors, "myself")
t.Desc.Counter = 99
fmt.Printf("--- t:\n%v\n\n", t)
//转换成yaml字符串类型
d, err := yaml.Marshal(&t)
if err != nil {
log.Fatalf("error: %v", err)
}
fmt.Printf("--- t dump:\n%s\n\n", string(d))
}
golang使用yaml格式解析构建配置文件的更多相关文章
- kubernetes yaml格式的Pod配置文件
kubernetes yaml文件解析 # yaml格式的pod定义文件完整内容: apiVersion: v1 #必选,版本号,例如v1 kind: Pod #必选,Pod metadata: #必 ...
- Golang 解析Yaml格式
Golang官方并没有提供Yaml解析包,所以需要使用第三方包.可用的第三方包有不少,这里选择的是 gopkg.in/yaml.v2,这个包在github上有不少的star,也的确挺好用.其使用的是A ...
- Golang 入门系列(九) 如何读取YAML,JSON,INI等配置文件
实际项目中,读取相关的系统配置文件是很常见的事情.今天就来说一说,Golang 是如何读取YAML,JSON,INI等配置文件的. 1. json使用 JSON 应该比较熟悉,它是一种轻量级的数据交换 ...
- yaml格式配置文件
YAML 是一种可读性非常高,与程序语言数据结构非常接近.同时具备丰富的表达能力和可扩展性,并且易于使用的数据标记语言. python中处理 Yaml 格式的数据需要先下载pyyaml: pip in ...
- Go-如何读取yaml,json,ini等配置文件
1. json使用 JSON 应该比较熟悉,它是一种轻量级的数据交换格式.层次结构简洁清晰 ,易于阅读和编写,同时也易于机器解析和生成. 创建 conf.json: { "enabled&q ...
- jQuery2.x源码解析(构建篇)
jQuery2.x源码解析(构建篇) jQuery2.x源码解析(设计篇) jQuery2.x源码解析(回调篇) jQuery2.x源码解析(缓存篇) 笔者阅读了园友艾伦 Aaron的系列博客< ...
- 一个.NET通用JSON解析/构建类的实现(c#)转
转自:http://www.cnblogs.com/xfrog/archive/2010/04/07/1706754.html NET通用JSON解析/构建类的实现(c#) 在.NET Framewo ...
- Python 解析构建数据大杂烩 -- csv、xml、json、excel
Python 可以通过各种库去解析我们常见的数据.其中 csv 文件以纯文本形式存储表格数据,以某字符作为分隔值,通常为逗号:xml 可拓展标记语言,很像超文本标记语言 Html ,但主要对文档和数据 ...
- 一个.NET通用JSON解析/构建类的实…
一个.NET通用JSON解析/构建类的实现(c#) 在.NET Framework 3.5中已经提供了一个JSON对象的序列化工具,但是他是强类型的,必须先按JSON对象的格式定义一个类型,并将类型加 ...
随机推荐
- ArcSDE10.2.2使用SQL操作ST_Geometry时报ORA-28579
给esri中国的客服打电话被告知,是一直存在这个bug,arcgis10.2对应的oracle数据库版本要用11.2.0.3及以上的: 1.数据库升级可以用打补丁的当方式. 2.直接重装,我这里是直接 ...
- Android Fragment使用(四) Toolbar使用及Fragment中的Toolbar处理
Toolbar作为ActionBar使用介绍 本文介绍了在Android中将Toolbar作为ActionBar使用的方法. 并且介绍了在Fragment和嵌套Fragment中使用Toolbar作为 ...
- AJAX初探,XMLHttpRequest介绍
AJAX初探,XMLHttpRequest介绍 AJAX AJAX = Asynchronous JavaScript and XML. 异步的JavaScript和XML. AJ ...
- swift实现饭否应用客户端源码
swift 版 iOS 饭否客户端 源码下载:http://code.662p.com/view/13318.html 饭否是中国大陆地区第一家提供微博服务的网站,被称为中国版Twitter.用户可通 ...
- Windows Phone App Studio发布重要更新-支持Windows 8.1 源代码生成
自2013年8月Apps Team发布Windows Phone App Studio以来,由于其低入门门槛和较好的易用性,用户和项目数量增长迅速,从Windows Phone Developer B ...
- WINDOWS登录系统之前(欢迎界面)运行指定程序脚本服务
方法一:创建可在系统登录之前运行的服务 PS:需要用到两个程序—Srvany和Instsrv,点击 http://pan.baidu.com/share/link?shareid=4111024491 ...
- 优化mysql服务器
一.使用show variables 和show status 命令查看MySQL的服务器静态参数值和动态运行状态信息. 二.可以使用 mysqld --verbose --help|more 查看某 ...
- 聊下 git 使用前的一些注意事项
连接方式https.ssh 在使用git的时候,不管你的服务器是开源平台github还是私服gitlab,你都需要clone仓库到本地,这个clone的时候就需要你选择连接方式.这个连接方式决定了你与 ...
- CSS white-space 属性
实例 规定段落中的文本不进行换行: p { white-space: nowrap } nowrap:文本不会换行,文本会在在同一行上继续,直到遇到 <br> 标签为止.
- Solr部分更新MultiValued的Date日期字段时报错及解决方案
问题描述如标题. 异常信息如下: Result Caused by: org.apache.solr.common.SolrException: Invalid Date String:'Mon Se ...