1.什么是yaml?
官网解释
%YAML 1.2
---
YAML: YAML Ain't Markup Language
What It Is: YAML is a human friendly data serialization
standard for all programming languages.
2.yaml语法
yaml语法,请参考这位仁兄的,写的很详细。
3. golang解析yaml文件
系统环境: MacOS、vim 8.0 、golang :go version go1.8 darwin/amd64
3.1 创建yaml文件
vim first.yaml
内容如下:
SiteName: seeta
SiteAddr: BeiJing
Https: true
Nginx:
Port: 443
LogPath: "/var/log//nginx/nginx.log"
Path: "/opt/nginx/"
3.2 go 解析yaml的package
3.2.1 yaml.v2
本文采用 : gopkg.in/yaml.v2
import "gopkg.in/yaml.v2"
3.2 解析yaml文件代码
package main
import (
"fmt"
"io/ioutil"
"gopkg.in/yaml.v2"
)
//Nginx nginx 配置
type Nginx struct {
Port int `yaml:"Port"`
LogPath string `yaml:"LogPath"`
Path string `yaml:"Path"`
}
//Config 系统配置配置
type Config struct{
Name string `yaml:"SiteName"`
Addr string `yaml:"SiteAddr"`
HTTPS bool `yaml:"Https"`
SiteNginx Nginx `yaml:"Nginx"`
}
func main() {
var setting Config
config, err := ioutil.ReadFile("./first.yaml")
if err != nil {
fmt.Print(err)
}
yaml.Unmarshal(config,&setting)
fmt.Println(setting.Name)
fmt.Println(setting.Addr)
fmt.Println(setting.HTTPS)
fmt.Println(setting.SiteNginx.Port)
fmt.Println(setting.SiteNginx.LogPath)
fmt.Println(setting.SiteNginx.Path)
}
函数简介:
ioutil.ReadFile("./first.yaml") :读取yaml文件信息
yaml.Unmarshal()
第一个输入参数:获取 ioutil.ReadFile 的值,为[]byte类型
第二个参数输出参数,可以为任意类型。
有疑问加站长微信联系(非本文作者)