errWrapper 返回函数中的 request ,response 的值是怎么传递的???

来源:8-3 服务器统一出错处理

失眠的小绵羊

2022-01-05

appHandler 这个包装类型,与定义的func FileList(writer http.ResponseWriter, request *http.Request) error 一致。这个没问题,但是errWrapper这个异常函数里面返回的类型:func(writer http.ResponseWriter, request *http.Request) ,这个没看明白,主要是没明白 ,FileList 里面参数 request ,response怎么传给返回函数的???

一、 type appHandler func(writer http.ResponseWriter, request *http.Request) error

二、 func errWrapper(handler appHandler) func(writer http.ResponseWriter, request *http.Request) {

三、 return func(writer http.ResponseWriter, request *http.Request) {

写回答

1回答

ccmouse

2022-01-13

errWrapper这个函数在执行时并没有发生request/response的传递。它只是输入了一个函数(appHandler类型),返回了一个函数(func(writer http.ResponseWriter, request *http.Request)类型)。这个返回的函数就像是数据一样,此时并没有被执行。这里面的request/response是函数类型的一部分,此时并没有值。

这个返回的函数被注册到http.HandlerFunc里面,那样当有request进来的时候,就会执行这个返回的函数。这时,request/response就很自然的存在了。

1
0

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程