• goroutine机制可以方便地实现异步处理
    • 另外,在启动新的goroutine时,不应该使用原始上下文,必须使用它的只读副本 ```go package main

    import ( “log” “time”

    1. "github.com/gin-gonic/gin"

    )

    func main() { // 1.创建路由 // 默认使用了2个中间件Logger(), Recovery() r := gin.Default() // 1.异步 r.GET(“/long_async”, func(c gin.Context) { // 需要搞一个副本 copyContext := c.Copy() // 异步处理 go func() { time.Sleep(3 time.Second) log.Println(“异步执行:” + copyContext.Request.URL.Path) }() }) // 2.同步 r.GET(“/long_sync”, func(c gin.Context) { time.Sleep(3 time.Second) log.Println(“同步执行:” + c.Request.URL.Path) })

    1. r.Run(":8000")

    } ```