package main import ( "log/slog" "os" "os/signal" "platform/pkg/env" "platform/pkg/logs" "platform/web" "syscall" ) func main() { // 退出信号 shutdown := make(chan os.Signal, 1) signal.Notify(shutdown, syscall.SIGINT, syscall.SIGTERM) // 初始化应用 env.Init() logs.Init() // 创建服务 app, err := web.New(&web.Config{ Listen: ":8080", }) if err != nil { slog.Error("Failed to create server", slog.Any("err", err)) return } // 异步运行服务 errCh := make(chan error) defer close(errCh) go func() { err := app.Run() if err != nil { slog.Error("Failed to run server", slog.Any("err", err)) errCh <- err } errCh <- nil }() // 关闭服务 select { case err = <-errCh: case <-shutdown: slog.Info("Received shutdown signal") app.Stop() err = <-errCh } if err != nil { slog.Error("Server error", slog.Any("err", err)) } }