• 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
    ", config.App.Name)
    	fmt.Printf("Mysql port is: %d
    ", config.Mysql.Port)
    }
    
  • 相关阅读:
    P2324 [SCOI2005]骑士精神
    P4160 [SCOI2009]生日快乐
    BZOJ 1103: [POI2007]大都市meg
    P4289 [HAOI2008]移动玩具
    P2472 [SCOI2007]蜥蜴
    adb: command not found 解決方法(转载)
    Thinkpad x230i安装Ubuntu10.04发生no network devices available
    Ubuntu10.04安装与配置nfs服务器(转载)
    RTSP协议简介(转载)
    UIBC 小註解(转载)
  • 原文地址:https://www.cnblogs.com/yuhaohao/p/15387265.html
Copyright © 2020-2023  润新知