// +build go1.8 package main import ( "log" "net/http" "os" "os/signal" "github.com/gin-gonic/gin" ) func main() { router := gin.Default() router.GET("/", func(c *gin.Context) { c.String(http.StatusOK, "Welcome Gin Server") }) server := &http.Server{ Addr: ":8080", Handler: router, } quit := make(chan os.Signal) signal.Notify(quit, os.Interrupt) go func() { <-quit log.Println("receive interrupt signal") if err := server.Close(); err != nil { log.Fatal("Server Close:", err) } }() if err := server.ListenAndServe(); err != nil { if err == http.ErrServerClosed { log.Println("Server closed under request") } else { log.Fatal("Server closed unexpect") } } log.Println("Server exist") }