如何使用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
}