YAML 是 "YAML Ain't a Markup Language"(YAML 不是一种标记语言)的缩写。相比JSON格式的方便。


YAML 支持以下常用几种数据类型:
key对应value
name: opcai使用缩进的方式
name:
opcai纯量是最基本的,不可再分的值,包括:
account: { name: opcai }使用缩进方式
account:
name: opcai以 - 开头的行表明构成一个数组
opcai:
- linux
- golang
- python也可以使用[]
opcai: [ linux , golang , python ]数据里面也可以包含对象
opcai:
- linux: manjaro
- golang: gin
- python: django
Go有开源的第三方库可以直接操作YAML
gopkg.in/yaml.v3例如:
有配置文件是app.yaml
mysql:
host: "127.0.0.1"
port: 3306
user: root
passowrd: opcai
db_name: opcaiGo读取例子
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作为配置文件,还是比较流行的。