在正常的项目中,一般像mysql这些数据库配置信息我们都是放在配置文件中的,所以这里我们需要改造下config.go文件,使其从外部读取对应的配置。这里演示项目还是按照前面的代码来。
首先我们安装toml依赖
这里我们使用的配置文件格式是toml,所以需要安装toml的依赖,执行如下的命令:
go get github.com/BurntSushi/toml
创建配置文件
接下来我们在config目录下创建一个config.toml的文件
config.toml文件内容如下:
[Database] host = "192.168.1.249" port = "3306" user = "root" password = "123456" dbname = "test"
改造config.go
接下来我们就来改造config.go文件。完整的改造后代码如下:
package config
import (
"fmt"
"github.com/BurntSushi/toml"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
var DB *gorm.DB
type DatabaseConfig struct {
Database struct {
User string `toml:"user"`
Password string `toml:"password"`
Host string `toml:"host"`
Port string `toml:"port"`
DBName string `toml:"dbname"`
}
}
func ConnectDatabase() {
var config DatabaseConfig
if _, err := toml.DecodeFile("./config/config.toml", &config); err != nil {
panic(err)
}
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
config.Database.User,
config.Database.Password,
config.Database.Host,
config.Database.Port,
config.Database.DBName)
fmt.Println(dsn)
var err error
DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic("Failed to connect to database")
}
}这里我们要读取配置文件,那么首先需要去创建一个配置文件的struct,例如我们的database配置信息在[Database]节点下,那么创建的struct如下:
type DatabaseConfig struct {
Database struct {
User string `toml:"user"`
Password string `toml:"password"`
Host string `toml:"host"`
Port string `toml:"port"`
DBName string `toml:"dbname"`
}
}按照此格式,他就会去读取Database节点下的属性信息。接着编写配置读取配置文件的部分:
var config DatabaseConfig
if _, err := toml.DecodeFile("./config/config.toml", &config); err != nil {
panic(err)
}这里把配置文件读取出来之后,就需要格式化拼装mysql的dsn字符串:
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
config.Database.User,
config.Database.Password,
config.Database.Host,
config.Database.Port,
config.Database.DBName)最好我们把dsn打印一下,以方便校验读取的配置文件是否准确。
这里大家一定要养成打印重要参数信息的习惯。
接下来我们启动项目测试一下:
可以看到打印出来的dsn信息是没有问题的,读取是正确的,同时web项目也是正常启动。
以上就是go语言中读取外部配置文件,然后让这些动态参数在应用中使用的案例。














还没有评论,来说两句吧...