一、使用Goland创建go项目
使用的是go 1.19版本,使用模块管理依赖
二、搭建项目目录
三、配置文件 (config.yaml)
app:
env: local # 开发获取生产环境
port: 9999 # 启动端口号
app_name: gin-gorm # 服务名称
app_url: http:localhost #启动地址
创建APP 结构体
type App struct {
Env string `mapstructure:"env" json:"env" yaml:"env"`
Port string `mapstructure:"port" json:"port" yaml:"port"`
AppName string `mapstructure:"app_name" json:"app_name" yaml:"app_name"`
AppUrl string `mapstructure:"app_url" json:"app_url" yaml:"app_url"`
}
四、使用viper读取配置文件
func InitialConfig() {
config := "config.yaml"
if configEnv := os.Getenv("VIPEER_CONFIG"); configEnv != "" {
config = configEnv
}
v := viper.New()
v.SetConfigFile(config)
v.SetConfigType("yaml")
err := v.ReadInConfig()
if err != nil {
panic(any(fmt.Errorf("viper读取配置错误,err:%v", err)))
}
// 把配置赋值给结构体
if err = v.Unmarshal(&global.Config);err != nil {
panic(any(fmt.Errorf("viper配置写入错误,err:%v", err)))
}
// 监听配置文件变化
v.WriteConfig()
v.OnConfigChange(func(in fsnotify.Event) {
fmt.Println("配置文件改变",in.Name)
if err = v.Unmarshal(&global.Config);err != nil {
panic(any(fmt.Errorf("viper配置写入错误,err:%v", err)))
}
})
}
运行项目
在根目录创建main.go 到了初始化配置包
package main
import (
"fmt"
"gin-blog/bootstrap"
"gin-blog/global"
)
func main() {
bootstrap.InitialConfig()
fmt.Printf("%v", global.Config)
}
使用go run maing.go 命令运行后输出