http.HandleFunc("/", errWrapper(filelisting.HandleListFile))函数执行流程
来源:3-4 服务器统一出错处理2
虚三白
2021-07-01 11:19:56
您好,通过debug模式看到执行顺序是errWrapper之后再是HandleFunc,这里有个疑惑,errWrapper不是在HandleFunc中执行,那他怎么获取write和request参数,来处理error
1回答
ccmouse
2021-07-04
这是函数式编程的应用。说的是这段代码https://git.imooc.com/class-108/learngo/src/master/lang/errhandling/filelistingserver/web.go#L18
这个errWrapper其实只有一行语句,就是返回了一个函数,返回的函数的类型是func(http.ResponseWriter, *http.Request)。
在运行18行(其实是18行到整个errWrapper的结束,这一个语句),它没有做任何事情,只是生成了func(http.ResponseWriter, *http.Request)这么一个函数,并且返回,我们会拿着它返回的这个函数注册到http handler里面https://git.imooc.com/class-108/learngo/src/master/lang/errhandling/filelistingserver/web.go#L67
这些是一次性的,在初始化的时候就完成,此时服务器还没有起来。注册完成之后,http服务器通过ListenAndServe启动,并开始接受请求。请求来了http会包装成http.ResponseWriter和*http.Request,调用我们注册的函数。
相似问题
回答 1
回答 1