设为首页 收藏本站
查看: 1017|回复: 0

[经验分享] golang yaml配置文件解析

[复制链接]

尚未签到

发表于 2018-9-20 08:46:35 | 显示全部楼层 |阅读模式
  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: [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
  

#冒号后面一定要有空格  

#缩进要用空格  

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 [hankangkang zhaozilong] 25 {123} {0}}
  




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-598611-1-1.html 上篇帖子: golang安装卸载 linux+windows+raspberryPI 平台 下篇帖子: Golang项目目录结构组织
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表