首頁>技術>

簡介

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 mainimport ( "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作為配置檔案,還是比較流行的。

171

YAML

MySQL

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 這本書給你白話講解:訊息佇列到底解決了什麼問題?