Golang解析yaml文件
一.具体思路
将配置yaml文件内容解析为我们定义好的struct,这种比较简单,如果想获取对应的值,直接获取即可。
二.实现步骤
- 首先根据配置文件的内容定义一个结构体Config,结构体类型和yaml中的属性配置了映射,这样后面解析的时候可以将值设置到对应的属性上
- 通过ioutil的ReadFile方法读取配置文件的内容
- 定义一个结构体变量
- 调用yaml的Unmarshal方法来解析文件的数据到结构体对象config中,注意这里必须传递结构体对下的地址&config。
三.举例说明
这里,我们定义一个yaml配置文件:
cat config.yaml
app:
name: demoApp
memcache:
enable : false
list : [redis, rabbitmq]
mysql:
user : root
password : mypassword
host : 192.168.1.1
port : 3306
dbname : mydb1
package main
import (
"fmt"
"io/ioutil"
"log"
yaml "gopkg.in/yaml.v2"
)
type Config struct {
App struct {
Name string `yaml:"name"`
}
MemCache struct {
Enable bool `yaml:"enable"`
List []string `yaml:"list"`
}
Mysql struct {
User string `yaml:"user"`
PassWord string `yaml:"password"`
Host string `yaml:"host"`
Port int32 `yaml:"port"`
DbName string `yaml:"dbname"`
}
}
func main() {
var config Config
File, err := ioutil.ReadFile("config.yml")
if err != nil {
log.Printf("读取配置文件失败 #%v", err)
}
err = yaml.Unmarshal(File, &config)
if err != nil {
log.Fatalf("解析失败: %v", err)
}
fmt.Printf("App name is: %v\n", config.App.Name)
fmt.Printf("Mysql port is: %d\n", config.Mysql.Port)
}
Golang解析yaml文件的更多相关文章
- 使用ruamel.yaml库,解析yaml文件
在实现的需求如下: 同事提供了一个文本文件,内含200多个host与ip的对应关系,希望能在k8s生成pod时,将这些对应关系注入到/etc/hosts中. 网上看文档,这可以通过扩充pod中的hos ...
- Golang 解析Yaml格式
Golang官方并没有提供Yaml解析包,所以需要使用第三方包.可用的第三方包有不少,这里选择的是 gopkg.in/yaml.v2,这个包在github上有不少的star,也的确挺好用.其使用的是A ...
- python解析yaml文件
YAML语法规则: http://www.ibm.com/developerworks/cn/xml/x-cn-yamlintro/ 下载PyYAML: http://www.yaml.org/ 解压 ...
- c++ 解析yaml文件
一直用c++操作ini做配置文件,想换成yaml,在全球最大的同性交友网站github上搜索,看有没有开源的库,功夫不负有心人,找到了yaml-cpp,用他解析了一个yaml的例子非常好使,分享一下如 ...
- 解析YAML文件
YamlMapFactoryBean yamlMapFactoryBean = new YamlMapFactoryBean(); yamlMapFactoryBean.setResources(ne ...
- python 解析 yaml文件
import yaml with open("./test.yaml") as f: x = yaml.load(f) print(x) [{'tasks': [{'yum': { ...
- Python--代码1(接口测试:测试用例从数据库读取写到yaml文件中)
一. 从数据库中读取全部接口,并写入yaml文件 数据库中的数据存储格式如下图: import pymysql import os import json # from ruamel import y ...
- golang使用yaml格式解析构建配置文件
现在主流的配置文件格式有这么几种,xml.yaml.config… xml就算了,太挫了,太土, 太繁琐… config 就是mysql,apache my.cnf的那种格式,这个格式适合功能分层, ...
- YAML文件解析
YAML是“另一种标记语言”的外语缩写,YAML 是一种比JSON(json多层次{ 与 [ 会被搞晕的)更直观的表现形式,展示上更易查错和关系描述.因为不需要一个专业工具就可以排查正确性.YAML目 ...
- python基础——python解析yaml类型文件
一.yaml介绍 yaml全称Yet Another Markup Language(另一种标记语言).采用yaml作为配置文件,文件看起来直观.简洁.方便理解.yaml文件可以解析字典.列表和一些基 ...
随机推荐
- websocket: the client is not using the websocket protocol: ‘upgrade’ token not found in ‘Connection’ head,客户端没有使用websocket协议:'upgrade'令牌未在'Connection'头中找到
错误分析 websocket: the client is not using the websocket protocol: 'upgrade' token not found in 'Connec ...
- Flask应用实战经验总结:使用工厂函数创建app与uWSGI服务部署启动失败解决方案
在 Flask 应用开发中,使用工厂函数创建应用实例,并借助 uWSGI 服务进行部署,是常见且高效的组合. 然而,在实际操作过程中,uWSGI 配置文件与应用启动函数之间的关系复杂,容易引发各种问题 ...
- leetcode每日一题:使所有字符相等的最小成本
题目 2712. 使所有字符相等的最小成本 给你一个下标从 0 开始.长度为 n 的二进制字符串 s ,你可以对其执行两种操作: 选中一个下标 i 并且反转从下标 0 到下标 i(包括下标 0 和下标 ...
- nbhh的泛型:TDictionary
type TCity = class Country: String; Latitude: Double; Longitude: Double; end; const EPSILON = 0.0000 ...
- Windows7、Windows10跳过创建用户并直接用Administrator身份登录
windows7 windows10跳过创建用户并直接用Administrator身份登录 一.操作方法: 在界面设置按 按 shift+f10 然后输入 lusrmgr.msc 用户管理控制台开启a ...
- java基础之继承,抽象类
一.继承 :就是子类继承父类的非私有属性和行为 二.特点 1.子类和父类中出现了同名的成员变量时,在子类中需要访问父类中非私有成员变量时,需要使用 super 关键字 格式:super.父类成员变量名 ...
- Git的基础使用(一)
Git版本管理工具的作用: (1)完整的记录项目代码变化的过程 (2)备份每一个变化过程的代码版本 (3)多人协同开发 1.配置全局变量 (1)配置用户名 git config --global us ...
- QT 的信号-槽机制
对于对象间的通信问题,很多框架采用回调函数类解决.QT 使用信号-槽解决对象间的通信问题,只要继承 QObject 类就可以使用信号-槽机制.信号-槽使用起来非常简单.灵活,发射和接收对象实现了解耦. ...
- 康谋分享 | 数据隐私和匿名化:PIPL与GDPR下,如何确保数据合规?(二)
在上期数据隐私和匿名化系列文章中,我们主要分享了<中国个人信息保护法>(PIPL)和<欧盟通用数据保护条例>(GDPR)在涵盖范围.定义.敏感信息等方面的异同点,今天,我们将重 ...
- .net6 api添加接口注释
参照: .NET 6 Swagger添加xml注释 - 凡尘一叶~ - 博客园 (cnblogs.com)[这个比较准] .net core的Swagger接口文档使用教程(一):Swashbuckl ...