package config import ( "bufio" "os" "strings" ) // LoadEnv 从 .env 文件加载环境变量 func LoadEnv(filename string) error { file, err := os.Open(filename) if err != nil { // 文件不存在时不报错,直接使用系统环境变量 if os.IsNotExist(err) { return nil } return err } defer file.Close() scanner := bufio.NewScanner(file) for scanner.Scan() { line := strings.TrimSpace(scanner.Text()) // 跳过空行和注释 if line == "" || strings.HasPrefix(line, "#") { continue } // 解析 KEY=VALUE parts := strings.SplitN(line, "=", 2) if len(parts) != 2 { continue } key := strings.TrimSpace(parts[0]) value := strings.TrimSpace(parts[1]) // 移除引号 value = strings.Trim(value, `"'`) // 只在环境变量未设置时才设置 if os.Getenv(key) == "" { os.Setenv(key, value) } } return scanner.Err() }