Golang解析yaml⽂件
二十五二十一编剧
⼀.具体思路
配置yaml⽂件内容解析为我们定义好的struct,这种⽐较简单,如果想获取对应的值,直接获取即可。
⼆.实现步骤
⾸先根据配置⽂件的内容定义⼀个结构体Config,结构体类型和yaml中的属性配置了映射,这样后⾯解析的时候可以将值设置到对应的属性上通过ioutil的ReadFile⽅法读取配置⽂件的内容
定义⼀个结构体变量
调⽤yaml的Unmarshal⽅法来解析⽂件的数据到结构体对象config中,注意这⾥必须传递结构体对下的地址&config。
三.举例说明
这⾥,我们定义⼀个yaml配置⽂件:
cat config.yaml
app:
name: demoApp
memcache:
enable : false
list : [redis, rabbitmq]
mysql:
user : root
password : mypassword
host : 192.168.1.1
port : 3306杨幂与冯绍峰
dbname : mydb1
package main
import (
"fmt"
"io/ioutil"
"log"
yaml "gopkg.in/yaml.v2"
校园美女同居txt下载)
type Config struct {
App struct {
Name string `yaml:"name"`
}
MemCache struct {
Enable bool `yaml:"enable"`
List []string `yaml:"list"`
}
Mysql struct {
User string `yaml:"user"`
PassWord string `yaml:"password"`
Host string `yaml:"host"`
Port int32 `yaml:"port"`
DbName string `yaml:"dbname"`
}
电脑 没声音
}
func main() {
var config Config
File, err := ioutil.ReadFile("l")
if err != nil {
log.Printf("读取配置⽂件失败 #%v", err)
}
南京会斯通老板err = yaml.Unmarshal(File, &config)读取配置文件失败
if err != nil {
log.Fatalf("解析失败: %v", err)
}
fmt.Printf("App name is: %v\n", config.App.Name)
fmt.Printf("Mysql port is: %d\n", config.Mysql.Port)
}