本文中以mongodb配置举例,根据系统环境变量进行配置切换,其他配置也是类似的方式
下载依赖
go get gopkg.in/yaml.v3
新建配置文件
config/config.yaml
# 开发环境配置
dev:
db:
mongodb:
uri: "mongodb://localhost:27017"
database-name: "db-name"
# 生产环境配置
prod:
db:
mongodb:
uri: "mongodb://username:password@localhost:27017"
database-name: "db-name"
新建配置加载类
config/config.go
package config
import (
"gopkg.in/yaml.v3"
"log"
"os"
)
type Mongodb struct {
Uri string `yaml:"uri"`
DatabaseName string `yaml:"database-name"`
}
type Db struct {
Mongodb Mongodb `yaml:"mongodb"`
}
type Config struct {
Db Db `yaml:"db"`
}
type Env struct {
Config map[string]Config `yaml:",inline"`
}
var Cfg *Config
func init() {
envName := os.Getenv("env")
if envName == "" {
log.Printf("未获取到启动环境变量")
envName = "dev"
}
configPath := "config/config.yaml"
configFile, err := os.ReadFile(configPath)
if err != nil {
log.Fatal("读取配置文件错误!", err)
}
var env Env
if err = yaml.Unmarshal(configFile, &env); err != nil {
log.Fatal("加载配置文件错误!", err)
}
config := env.Config[envName]
Cfg = &config
log.Printf("配置加载成功 %+v\n", Cfg)
}
使用配置
main.go
package main
import (
"log"
"project_name/config"
)
func main() {
log.Printf("mongoDb配置:%+v", config.Cfg.Db.Mongodb)
}
通过设置系统的env环境变量即可实现切换配置的效果(可在生产部署脚本里面手动设置环境变量等方式实现)
本文以MongoDB配置为例,介绍在Golang中根据系统环境变量进行配置切换的方法。包括下载依赖、新建配置文件config/config.yaml、新建配置加载类config/config.go,以及在main.go中使用配置,通过设置系统env环境变量实现配置切换。
891

被折叠的 条评论
为什么被折叠?



