yaml文件语法

此模块内容转自:http://www.ruanyifeng.com/blog/2016/07/yaml.html

  1. 大小写敏感
  2. 使用缩进表示层级关系
  3. 缩进时不允许使用Tab键,只允许使用空格。
  4. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

# 表示注释,从这个字符一直到行尾,都会被解析器忽略。

YAML 支持的数据结构有三种

  1. 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes / 字典(dictionary
  2. 数组:一组按次序排列的值,又称为序列(sequence / 列表(list
  3. 纯量(scalars):单个的、不可再分的值

对象

对象的一组键值对,使用冒号结构表示。

  1. animal: pets

转为 JavaScript 如下。

  1. { animal: 'pets' }

Yaml 也允许另一种写法,将所有键值对写成一个行内对象。

  1. hash: { name: Steve, foo: bar }

转为 JavaScript 如下。

  1. { hash: { name: 'Steve', foo: 'bar' } }

数组

一组连词线开头的行,构成一个数组。

  1. - Cat
  2. - Dog
  3. - Goldfish

转为 JavaScript 如下。

  1. [ 'Cat', 'Dog', 'Goldfish' ]

数据结构的子成员是一个数组,则可以在该项下面缩进一个空格。

  1. -
  2. - Cat
  3. - Dog
  4. - Goldfish

转为 JavaScript 如下。

  1. [ [ 'Cat', 'Dog', 'Goldfish' ] ]

数组也可以采用行内表示法。

  1. animal: [Cat, Dog]

转为 JavaScript 如下。

  1. { animal: [ 'Cat', 'Dog' ] }

复合结构

对象和数组可以结合使用,形成复合结构。

  1. languages:
  2. - Ruby
  3. - Perl
  4. - Python
  5. websites:
  6. YAML: yaml.org
  7. Ruby: ruby-lang.org
  8. Python: python.org
  9. Perl: use.perl.org

转为 JavaScript 如下。

  1. { languages: [ 'Ruby', 'Perl', 'Python' ],
  2. websites:
  3. { YAML: 'yaml.org',
  4. Ruby: 'ruby-lang.org',
  5. Python: 'python.org',
  6. Perl: 'use.perl.org' } }

golang解析库

https://github.com/go-yaml/yaml

  1. #冒号后面一定要有空格
  2. #缩进要用空格
  3. GIN_MODE: release
  4. AUTHORS: ["hankangkang","zhaozilong"]
  5. AGE:
  6. DEV:
  7. PASSAORD:
  8. TEST:
  9. PASSWORD:
  1. //yaml后面的自动要被双引号包裹
  2.  
  3. type Pwd struct {
  4. Password int `yaml:"PASSAORD"`
  5. }
  6. type Env struct {
  7. GinMode string `yaml:"GIN_MODE"`
  8. Authors []string `yaml:"AUTHORS"`
  9. Age int `yaml:"AGE"`
  10. Dev Pwd `yaml:"DEV"`
  11. Test Pwd `yaml:"TEST"`
  12.  
  13. }
  14.  
  15. fun main(){
  16. content,_ := ioutil.ReadFile("env.yaml")
  17. env := Env{}
  18. err := yaml.Unmarshal(content, &env)
  19.  
  20. fmt.Println(err, env)
  21. return ;
  22. }
  23.  
  24. //输出
  25. <nil> {release [hankangkang zhaozilong] {} {}}

golang yaml配置文件解析的更多相关文章

  1. Argo 安装和 workflow 实例配置文件解析

    一.Argo 安装配置 1.1 Argo 安装 $ kubectl create ns argo $ kubectl apply -n argo -f https://raw.githubuserco ...

  2. Golang配置文件解析-oozgconf

    代码地址如下:http://www.demodashi.com/demo/14411.html 简介 oozgconf基于Golang开发,用于项目中配置文件的读取以及加载,是一个轻量级的配置文件工具 ...

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

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

  4. saltstack主机管理项目:编写插件基类-获取主机列表-提取yaml配置文件(四)

    一.编写插件基类 1.目录结构 1.我是如何获知我有多少种系统? 当客户端第一连接过来的时候,我就已经把这些文件存下来了 ,存在到哪里了?存到数据库了 每次对主机发送命令的动作时,我从库里把数据取出来 ...

  5. Logtash 配置文件解析-转载

    转载地址:https://dongbo0737.github.io/2017/06/13/logstash-config/ Logtash 配置文件解析 logstash 一个ELK架构中,专门用来进 ...

  6. Java开发学习(三十六)----SpringBoot三种配置文件解析

    一. 配置文件格式 我们现在启动服务器默认的端口号是 8080,访问路径可以书写为 http://localhost:8080/books/1 在线上环境我们还是希望将端口号改为 80,这样在访问的时 ...

  7. MyBatis配置文件解析

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

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

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

  9. Hadoop配置文件解析

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

随机推荐

  1. pyspider中内容选择器常用方法汇总

    pyspider 的内容选择器默认已经实例化一个pyquery对象,可以直接使用pyquery的api来获取自己需要的内容. 1.在pyquery中使用response.doc就可以直接实例化一个py ...

  2. JS对表格排序(支持对序号,数字,字母,日期)

    JS对表格排序(支持对序号,数字,字母,日期) 前不久看到淘宝组件有"对表格排序的插件" 如想要看 可以看这个地址 http://gallery.kissyui.com/KSort ...

  3. OpenCV开发环境搭建-并测试一个图像灰度处理程序

    转载地址:http://blog.csdn.net/sjz_iron/article/details/8614070

  4. [c.c.a.m.AgentManagerImpl] (AgentConnectTaskPool-39:ctx-c37090c5) Failed to handle host connection: java.lang.IllegalArgumentException: Can't add host: with h

    如果无法添加成功,/etc/redhat-release文件覆盖过去 cat /etc/redhat-release CentOS Linux release 7.1.1503 (Core)Red H ...

  5. 如何高效的通过BP算法来训练CNN

    < Neural Networks Tricks of the Trade.2nd>这本书是收录了1998-2012年在NN上面的一些技巧.原理.算法性文章,对于初学者或者是正在学习NN的 ...

  6. nodejs开发调试时,使用supervisor

    如果你有 PHP 开发经验,会习惯在修改 PHP 脚本后直接刷新浏览器以观察结果,而你在开发 Node.js 实现的 HTTP 应用时会发现,无论你修改了代码的哪一部份,都必须终止Node.js 再重 ...

  7. 2.3《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——重命名,复制,删除

    最常用的文件操作除了将文件列出来外,就应该是重命名,复制,删除了.正如将文件列出来一样,大多数现代操作系统为这些任务提供了用户图形界面,但是在许多场景中,用命令行还是会更方便. 使用mv命令重命名一个 ...

  8. POJ 1789&&2485&&1258&&3026

    这个真的太水了——MST专辑. 如果不会MST的两种算法的同学可以出门右转了. 大致讲一下,第一题我是用Prim+堆优化的(毕竟点比较多),后面三题用的是Kruskal(习惯打,而且并查集常数实在小) ...

  9. W25Q128---读写

    占坑! 总结:通信方式是SPI,读数据可以从任何地方读,写数据和擦出数据需要按照页或者扇区或者簇为单位进行. 写数据:一次最多写一页,如果超出一页数据长度,则分几次完成.例如本芯片一个扇区为4096个 ...

  10. jquery自动获取项目url路径

    //很多时候我们需要使用当前项目路径,但是如果把项目路径写死,会带来很多不便,此时就需要自动获取项目路径.//我们可以根据jquery来进行自动获取项目路径,获取方法如下function getRoo ...