jmton 发表于 2018-9-20 08:46:35

golang yaml配置文件解析

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

大小写敏感  

使用缩进表示层级关系  

缩进时不允许使用Tab键,只允许使用空格。  

缩进的空格数目不重要,只要相同层级的元素左侧对齐即可  

  # 表示注释,从这个字符一直到行尾,都会被解析器忽略。
  YAML 支持的数据结构有三种
  

对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)  

数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)  

纯量(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:   

  

  转为 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
  

#冒号后面一定要有空格  

#缩进要用空格  

GIN_MODE:>
AUTHORS: ["hankangkang","zhaozilong"]  

AGE: 25  
DEV:
  
PASSAORD: 123
  
TEST:
  
PASSWORD: 45
  

  

//yaml后面的自动要被双引号包裹  

  
type Pwd struct {
  
   Password int `yaml:"PASSAORD"`
  
}
  
type Env struct {
  
   GinMode    string    `yaml:"GIN_MODE"`
  
   Authors []string `yaml:"AUTHORS"`
  
   Age   int    `yaml:"AGE"`
  
   Dev   Pwd    `yaml:"DEV"`
  
   Test    Pwd    `yaml:"TEST"`
  

  
}
  

  
fun main(){
  
         content,_ := ioutil.ReadFile("env.yaml")
  
   env := Env{}
  
   err := yaml.Unmarshal(content, &env)
  

  
   fmt.Println(err, env)
  
   return ;
  
}
  

  
//输出
  
{release 25 {123} {0}}
  



页: [1]
查看完整版本: golang yaml配置文件解析