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}}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~