zoukankan      html  css  js  c++  java
  • golang yaml配置文件解析

    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):单个的、不可再分的值

    对象

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

    animal: pets
    

    转为 JavaScript 如下。

    { animal: 'pets' }
    

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

    hash: { name: Steve, foo: bar } 
    

    转为 JavaScript 如下。

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

    数组

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

    - Cat
    - Dog
    - Goldfish
    

    转为 JavaScript 如下。

    [ 'Cat', 'Dog', 'Goldfish' ]
    

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

    -
     - Cat
     - Dog
     - Goldfish
    

    转为 JavaScript 如下。

    [ [ 'Cat', 'Dog', 'Goldfish' ] ]
    

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

    animal: [Cat, Dog]
    

    转为 JavaScript 如下。

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

    复合结构

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

    languages:
     - Ruby
     - Perl
     - Python 
    websites:
     YAML: yaml.org 
     Ruby: ruby-lang.org 
     Python: python.org 
     Perl: use.perl.org 
    

    转为 JavaScript 如下。

    { languages: [ 'Ruby', 'Perl', 'Python' ],
      websites: 
       { YAML: 'yaml.org',
         Ruby: 'ruby-lang.org',
         Python: 'python.org',
         Perl: 'use.perl.org' } }

     

    golang解析库

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

    1 #冒号后面一定要有空格
    2 #缩进要用空格
    3 GIN_MODE: release
    4 AUTHORS: ["hankangkang","zhaozilong"]
    5 AGE: 25
    6 DEV:
    7  PASSAORD: 123
    8 TEST:
    9  PASSWORD: 45
     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] 25 {123} {0}}
  • 相关阅读:
    99%的人都理解错了HTTP中GET与POST的区别
    idea 使用
    一道java算法题
    记一次jedis并发使用问题JedisException: Could not return the resource to the pool
    我珍藏的神兵利器
    记一次诡异的debug
    spring cloud config
    spring mvc 集成quartz
    git使用下
    Mongo--03 mongo副本集、备份与恢复
  • 原文地址:https://www.cnblogs.com/hanyouchun/p/6724056.html
Copyright © 2011-2022 走看看