// +build ignore,OMIT package main import ( "context" "fmt" "log" "net/http" "os" "os/signal" ) func main() { // subscribe to SIGINT signals quit := make(chan os.Signal) // HL signal.Notify(quit, os.Interrupt) srv := &http.Server{Addr: ":8080", Handler: http.DefaultServeMux} go func() { // HL <-quit // HL log.Println("Shutting down server...") if err := srv.Shutdown(context.Background()); err != nil { // HL log.Fatalf("could not shutdown: %v", err) } }() http.HandleFunc("/", handler) err := srv.ListenAndServe() if err != http.ErrServerClosed { // HL log.Fatalf("listen: %s\n", err) } log.Println("Server gracefully stopped") } func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "hello") }