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)
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM