一只小开发仔...

Golang读取yaml文件的配置

353 2020-12-18 06:50:08

YAML 是 "YAML Ain't a Markup Language"(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)。YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。YAML 的配置文件后缀为 .yml。

yaml文件:

./configs/config.yaml

app:
  host: 127.0.0.1
  port: 3003
  jwtsecret: 123
adminuser:
  username: admin
  pwd: 123
cache:
    host: 127.0.0.1
    pwd: 123
    port: 6379
    select: 0
db:
  database: nuxt-blog
  dbtype: mysql
  host: 127.0.0.1
  port: 3306
  user: root
  pwd: 123

读取:

package configs

import (
	"gopkg.in/yaml.v2"
	"io/ioutil"
	"os"
)

type Config struct {
	App       App
	AdminUser AdminUser
	Db        Db
	Cache     Cache
}


type App struct {
	Host      string
	Port      int
	JwtSecret string
}

type AdminUser struct {
	UserName  string
	Pwd       string
}

type Cache struct {
	Host   string
	Pwd    string
	Port   int
	Select int
}

type Db struct {
	Host      string
	Port      int
	User      string
	Pwd       string
	Database  string
	DbType    string
}

var Configs *Config

func init()  {
	file, err := os.Open("./configs/config.yaml")
	if err != nil {
		panic(err)
	}

	bytes,err := ioutil.ReadAll(file)

	if err != nil {
		panic(err)
	}

	err = yaml.Unmarshal(bytes,&Configs)
	if err != nil {
		panic(err)
	}
}