前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用yaml文件配置go的参数

使用yaml文件配置go的参数

作者头像
是小张啊喂
发布2022-08-18 17:29:23
7780
发布2022-08-18 17:29:23
举报
文章被收录于专栏:软件

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

新增yaml依赖

代码语言:javascript
复制
$ go get gopkg.in/yaml.v2

新增yaml文件

代码语言:javascript
复制
server:
  port: 8090

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

读取配置文件

代码语言:javascript
复制
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框架

代码语言:javascript
复制
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
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档