在正常的项目中,一般像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语言中读取外部配置文件,然后让这些动态参数在应用中使用的案例。
还没有评论,来说两句吧...