异步协程:
https://blog.csdn.net/jkwanga/article/details/110948445

golang的高并发一大利器就是协程。gin里可以借助协程实现异步任务。

因为涉及异步过程,请求的上下文需要copy到异步的上下文,并且这个上下文是只读的。

router.GET("/sync", func(c *gin.Context) {
    time.Sleep(5 * time.Second)    
    log.Println("Done! in path" + c.Request.URL.Path)
})
    
router.GET("/async", func(c *gin.Context) {
    cCp := c.Copy()    
    go func() {        
    	time.Sleep(5 * time.Second)        
    	log.Println("Done! in path" + cCp.Request.URL.Path)
    }()
})