如何使用yaml文件配置go的参数

新增yaml依赖

$ go get gopkg.in/yaml.v2

新增yaml文件

server:
  port: 8090

datasource:
  driverName: mysql
  host: 127.0.0.1
  port: 3306
  database: account
  username: root
  password: root
  charset: utf8

读取配置文件

var (
	Config *AppConfig
)

// AppConfig 系统配置
type AppConfig struct {
	Server struct {
		Port string `yaml:"port"`
	}

	// 数据库配置
	Datasource struct {
		DriverName string `yaml:"driverName"`
		Host       string `yaml:"host"`
		Port       string `yaml:"port"`
		Database   string `yaml:"database"`
		Username   string `yaml:"username"`
		Password   string `yaml:"password"`
		Charset    string `yaml:"charset"`
	}
}

func init() {
	// 所有配置文件实体
	v := AppConfig{}
	// 下面使用的是相对路径,config.json文件和main.go文件处于同一目录下
	// JsonParse.Load("../../config.json", &v)
	// 首先获取当前激活是激活那个配置文件
	context, err := ioutil.ReadFile("./application.yml")
	if err != nil {
		log.Printf("读取配置文件错误:%s", err.Error())
		panic(err)
	}
	if err = yaml.Unmarshal(context, &v); err != nil {
		log.Printf("解析配置文件错误:%s", err.Error())
		// panic(err)
	}
	Config = &v
	log.Printf("配置文件信息:%+v", v)

	initLog()
}

配置完成后初始化数据库连接 这里使用的是gin框架和gorm框架

var DB *gorm.DB

// InitDB 初始化数据库连接
func InitDB() *gorm.DB {
	driverName := config.Config.Datasource.DriverName
	host := config.Config.Datasource.Host
	port := config.Config.Datasource.Port
	database := config.Config.Datasource.Database
	userName := config.Config.Datasource.Username
	password := config.Config.Datasource.Password
	charset := config.Config.Datasource.Charset

	args := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=%s&parseTime=true",
		userName, password, host, port, database, charset)

	// 官方依赖 :gorm.io/gorm 工具包 :github.com/jinzhu/gorm
	// 官方的 gorm.Open() 方法: Open(dialector Dialector, opts ...Option)
	// 工具包方法: Open(dialect string, args ...interface{})
	db, err := gorm.Open(driverName, args)
	if err != nil {
		panic("failed to connect database,err:" + err.Error())
	}
	// 配置打印SQL
	db.LogMode(true)

	// 自动创建数据表
	// db.AutoMigrate(&Student{})
	DB = db
	return db
}