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" ) 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("config.yml") 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) }