简介
YAML 是 "YAML Ain't a Markup Language"(YAML 不是一种标记语言)的缩写。相比JSON格式的方便。
语法
内容是大小写敏感
使用缩进表示层级关系(有点像Python缩进)
缩进只允许空格,不能使用tab代替
缩进的空格数不重要,只要相同层级的元素左对齐即可
注释使用"#"
key后面冒号要加一个空格
数据类型
YAML 支持以下常用几种数据类型:
对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
纯量(scalars):单个的、不可再分的值
纯量
key对应value
name: opcai
使用缩进的方式
name:
opcai
纯量是最基本的,不可再分的值,包括:
字符串
布尔值
整数
浮点数
Null
时间
日期
对象
account: { name: opcai }
使用缩进方式
account:
name: opcai
数组
以 - 开头的行表示构成一个数组
opcai:
- linux
- golang
- python
也可以使用[]
opcai: [ linux , golang , python ]
数据里面也可以包含对象
opcai:
- linux: manjaro
- golang: gin
- python: django
Go处理 YAML
Go有开源的第三方库可以直接操作YAML
gopkg.in/yaml.v3
例如:
有配置文件是app.yaml
mysql:
host: "127.0.0.1"
port: 3306
user: root
passowrd: opcai
db_name: opcai
Go读取例子
package main
import (
"fmt"
"io/ioutil"
"log"
"gopkg.in/yaml.v2"
)
type Config struct {
MySQL MySQLConfig `yaml:"mysql"`
}
type MySQLConfig struct {
Host string `yaml:"host"`
Port int `yaml:"port"`
User string `yaml:"user"`
Password string `yaml:"password"`
DBName string `yaml:"db_name"`
}
func main() {
fileContent, err := ioutil.ReadFile("app.yaml")
if err != nil {
log.Panicln(err)
}
config := Config{}
err = yaml.Unmarshal(fileContent, &config)
if err != nil {
log.Panicln(err)
}
fmt.Println(config.MySQL.Host, config.MySQL.Port, config.MySQL.User, config.MySQL.Password, config.MySQL.DBName)
}
总结
现在很多应用都是使用yaml作为配置文件,还是比较流行的。
图片和内容源自网络分享,若有侵权,请联系删除!
上海艾磊科技有限公司专门为企业提供IT咨询,IT外包,系统集成,以及各类IT增值服务。其中增值服务包括OFFICE 365云服务,鼎捷企业ERP管理软件,云备份,企业邮箱,无线覆盖,上网行为管理,VPN架设,网络安全服务,INTERNET接入,设备租赁, IP电话服务