package env import ( "fmt" "log/slog" "os" "strconv" "github.com/joho/godotenv" ) var ( AppCtrlPort uint16 AppDataPort uint16 DbHost string DbPort uint16 DbDatabase string DbUsername string DbPassword string DbTimezone string ) func Init() { // 加载 .env 文件 err := godotenv.Load() if err != nil { slog.Debug("没有本地环境变量文件") } appCtrlPortStr := os.Getenv("APP_CTRL_PORT") if appCtrlPortStr == "" { panic("环境变量 APP_CTRL_PORT 未设置") } appCtrlPort, err := strconv.ParseUint(appCtrlPortStr, 10, 16) if err != nil { panic(fmt.Sprintf("环境变量 APP_CTRL_PORT 格式错误: %v", err)) } AppCtrlPort = uint16(appCtrlPort) appDataPortStr := os.Getenv("APP_DATA_PORT") if appDataPortStr == "" { panic("环境变量 APP_DATA_PORT 未设置") } appDataPort, err := strconv.ParseUint(appDataPortStr, 10, 16) if err != nil { panic(fmt.Sprintf("环境变量 APP_DATA_PORT 格式错误: %v", err)) } AppDataPort = uint16(appDataPort) DbHost = os.Getenv("DB_HOST") if DbHost == "" { panic("环境变量 DB_HOST 未设置") } dbPortStr := os.Getenv("DB_PORT") if dbPortStr == "" { dbPortStr = "5432" } dbPort, err := strconv.ParseUint(dbPortStr, 10, 16) if err != nil { panic(fmt.Sprintf("环境变量 DB_PORT 格式错误: %v", err)) } DbPort = uint16(dbPort) DbDatabase = os.Getenv("DB_DATABASE") if DbDatabase == "" { panic("环境变量 DB_DATABASE 未设置") } DbUsername = os.Getenv("DB_USERNAME") if DbUsername == "" { panic("环境变量 DB_USERNAME 未设置") } DbPassword = os.Getenv("DB_PASSWORD") if DbPassword == "" { panic("环境变量 DB_PASSWORD 未设置") } DbTimezone = os.Getenv("DB_TIMEZONE") if DbTimezone == "" { DbTimezone = "Asia/Shanghai" } }