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}}
  • 相关阅读:
    发现个atan2的正确使用方式
    Forward+ Shading架构
    fatal: unable to connect to gitee.com: gitee.com[0: 180.97.125.228]: errno=Unknown error 解决方案
    HDFS HA(高可用性)集群规划
    如何使用RTP引擎对语音编码进行转码
    关于 Angular 应用 tsconfig.json 中的 target 属性
    浅谈 Orbeon form builder 的权限控制
    关于 Angular 应用 tsconfig.json 中的 lib 属性
    orbeon form 通过 url 的方式同第三方应用集成的开发明细
    orbeon form 的配置介绍
  • 原文地址:https://www.cnblogs.com/hanyouchun/p/6724056.html
Copyright © 2011-2022 走看看