// 配置加载:区分dev/prod环境 package core import ( "flag" "simple-memo/global" "github.com/spf13/viper" ) // InitConfig 读取命令行参数 -env dev/prod func InitConfig() { // 读取启动参数 env := flag.String("env", "dev", "运行环境:dev 或 prod") flag.Parse() // 1. 获取项目根目录的绝对路径(基于当前执行文件的位置) //exePath, err := os.Executable() //if err != nil { // panic(fmt.Sprintf("获取执行文件路径失败: %v", err)) //} //projectRoot := filepath.Dir(exePath) // 执行文件在根目录,所以Dir就是根目录 // 2. 用绝对路径加载配置文件 v := viper.New() v.SetConfigName("config-" + *env) // config-dev.yaml v.SetConfigType("yaml") v.AddConfigPath("../config") // 配置文件目录 //viper.AddConfigPath(filepath.Join(projectRoot, "config")) // 绝对路径:根目录/config // 读取配置 if err := v.ReadInConfig(); err != nil { panic("配置文件读取失败:" + err.Error()) } global.VP = v // 赋值给全局 }