一.具体思路

将配置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文件的更多相关文章

  1. 使用ruamel.yaml库,解析yaml文件

    在实现的需求如下: 同事提供了一个文本文件,内含200多个host与ip的对应关系,希望能在k8s生成pod时,将这些对应关系注入到/etc/hosts中. 网上看文档,这可以通过扩充pod中的hos ...

  2. Golang 解析Yaml格式

    Golang官方并没有提供Yaml解析包,所以需要使用第三方包.可用的第三方包有不少,这里选择的是 gopkg.in/yaml.v2,这个包在github上有不少的star,也的确挺好用.其使用的是A ...

  3. python解析yaml文件

    YAML语法规则: http://www.ibm.com/developerworks/cn/xml/x-cn-yamlintro/ 下载PyYAML: http://www.yaml.org/ 解压 ...

  4. c++ 解析yaml文件

    一直用c++操作ini做配置文件,想换成yaml,在全球最大的同性交友网站github上搜索,看有没有开源的库,功夫不负有心人,找到了yaml-cpp,用他解析了一个yaml的例子非常好使,分享一下如 ...

  5. 解析YAML文件

    YamlMapFactoryBean yamlMapFactoryBean = new YamlMapFactoryBean(); yamlMapFactoryBean.setResources(ne ...

  6. python 解析 yaml文件

    import yaml with open("./test.yaml") as f: x = yaml.load(f) print(x) [{'tasks': [{'yum': { ...

  7. Python--代码1(接口测试:测试用例从数据库读取写到yaml文件中)

    一. 从数据库中读取全部接口,并写入yaml文件 数据库中的数据存储格式如下图: import pymysql import os import json # from ruamel import y ...

  8. golang使用yaml格式解析构建配置文件

    现在主流的配置文件格式有这么几种,xml.yaml.config…  xml就算了,太挫了,太土, 太繁琐… config 就是mysql,apache my.cnf的那种格式,这个格式适合功能分层, ...

  9. YAML文件解析

    YAML是“另一种标记语言”的外语缩写,YAML 是一种比JSON(json多层次{ 与 [ 会被搞晕的)更直观的表现形式,展示上更易查错和关系描述.因为不需要一个专业工具就可以排查正确性.YAML目 ...

  10. python基础——python解析yaml类型文件

    一.yaml介绍 yaml全称Yet Another Markup Language(另一种标记语言).采用yaml作为配置文件,文件看起来直观.简洁.方便理解.yaml文件可以解析字典.列表和一些基 ...

随机推荐

  1. markdown设置目录、锚点

    目录 在编辑时正确使用标题,在段首输入[toc]即可 锚点 创建到命名锚记的链接的过程分为两步: 首先是建立一个跳转的连接: [说明文字](#jump) 然后标记要跳转到什么位置,注意id要与之前(# ...

  2. Shell脚本实现服务器多台免密

    简介 本脚本(auto_ssh_batch.sh)用于在多台主机之间快速配置SSH免密登录,并支持远程传输脚本/文件及执行命令.通过 pass 文件提供统一认证凭据,通过 nodes 文件定义目标主机 ...

  3. 探秘Transformer系列之(17)--- RoPE

    探秘Transformer系列之(17)--- RoPE 目录 探秘Transformer系列之(17)--- RoPE 文章总表 0x00 概述 0x01 总体思路 1.1 注意力机制回顾 1.2 ...

  4. Global.asax 转

    备忘: 项目中的Global.asax文件里通常包含这5个方法: Application_Start – web 应用程序最初启动时执行 Application_End – 应用程序关闭时运行 App ...

  5. 移除任务栏右端"显示桌面"按钮-AutoIt

    核心代码 $hwnd = WinGetHandle("[CLASS:Shell_TrayWnd]", "") ControlHide($hwnd, " ...

  6. 前端ai工具v0使用配置

    资料 ai工具Vo Installation - Tailwind CSS 以vue3 + sass为例,配置如下 安装tailwindcss npm install -D tailwindcss n ...

  7. hybrid应用自动化

    一.hybrid介绍 hybrid是一种混合app,将h5页面嵌入native原生页面. 基于uiautomator+chromedriver.native部分走uiautomator,web部分走c ...

  8. 【深入解析AQS】从设计模式到ReentrantLock实现再到自定义锁

    深入解析AQS:设计模式.ReentrantLock实现与自定义锁开发 一.模板方法模式:AQS的架构基石 1.1 模式核心思想 模板方法模式通过固定算法骨架+可变实现细节的设计,实现了代码复用与扩展 ...

  9. Mybatis 框架课程第三天

    目录 1 Mybatis连接池与事务深入 1.1 Mybatis的连接池技术 1.1.1 Mybatis连接池的分类 1.1.2 Mybatis中数据源的配置 1.2 Mybatis 的事务控制 1. ...

  10. 【工具】浏览器插件|Edge浏览器划词翻译插件(可用于翻译PDF文件,截图翻译)

    本文体验版本:Edge v10.1.0 偶然安装了一个国人自13年开发至今的划词翻译浏览器插件,曾经开源,现在闭源. 功能全面到令人落泪. 全面到反手把小绿鲸扔了-- 官方介绍是支持一站式划词 / 截 ...