package main import ( "context" "fmt" "os" "os/signal" "syscall" "time" "go.uber.org/zap" ) func main() { // 初始化应用程序(Wire 自动生成) app, err := InitializeApp() if err != nil { fmt.Fprintf(os.Stderr, "failed to initialize app: %v\n", err) os.Exit(1) } // 启动应用程序 ctx := context.Background() if err := app.Start(ctx); err != nil { app.Logger.Fatal("failed to start app", zap.Error(err), ) } // 优雅关闭 quit := make(chan os.Signal, 1) signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM) <-quit shutdownCtx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() if err := app.Stop(shutdownCtx); err != nil { app.Logger.Error("Error during shutdown", zap.Error(err), ) } }