1. 无中间件启动
#使用r := gin.New()#替代// 默认启动方式,包含 Logger、Recovery 中间件r := gin.Default()
2. 使用中间件
func main() {    // 创建一个不包含中间件的路由器    r := gin.New()    // 全局中间件    // 使用 Logger 中间件    r.Use(gin.Logger())    // 使用 Recovery 中间件    r.Use(gin.Recovery())    // 路由添加中间件,可以添加任意多个    r.GET("/benchmark", MyBenchLogger(), benchEndpoint)    // 路由组中添加中间件    // authorized := r.Group("/", AuthRequired())    // exactly the same as:    authorized := r.Group("/")    // per group middleware! in this case we use the custom created    // AuthRequired() middleware just in the "authorized" group.    authorized.Use(AuthRequired())    {        authorized.POST("/login", loginEndpoint)        authorized.POST("/submit", submitEndpoint)        authorized.POST("/read", readEndpoint)        // nested group        testing := authorized.Group("testing")        testing.GET("/analytics", analyticsEndpoint)    }    // Listen and serve on 0.0.0.0:8080    r.Run(":8080")}
3. 自定义组件
func Logger() gin.HandlerFunc {    return func(c *gin.Context) {        t := time.Now()        // Set example variable        c.Set("example", "12345")        // before request        c.Next()        // after request        latency := time.Since(t)        log.Print(latency)        // access the status we are sending        status := c.Writer.Status()        log.Println(status)    }}func main() {    r := gin.New()    r.Use(Logger())    r.GET("/test", func(c *gin.Context) {        example := c.MustGet("example").(string)        // it would print: "12345"        log.Println(example)    })    // Listen and serve on 0.0.0.0:8080    r.Run(":8080")}