Go语言中http.HandleFunc传入Handler函数的参数疑问
关于Go中http.HandleFunc传递处理函数的疑问解答
你这里其实是把函数本身作为参数传给http.HandleFunc,而不是调用这个函数——这是Go里的「函数值」用法,只要你的函数符合http.HandlerFunc类型的定义(也就是func(http.ResponseWriter, *http.Request)),就能直接传进去,不需要提前传参数。
至于w和r这两个参数:
- 它们是由Go的
net/http包底层的HTTP服务器逻辑来填充的 - 当服务器接收到匹配
/view/路径的HTTP请求时,服务器会自动创建:w:一个实现了http.ResponseWriter接口的对象,用来向客户端发送响应内容r:包含当前请求所有信息(比如URL、请求头、请求体等)的*http.Request对象
- 之后服务器会调用你注册的
viewHandler,把这两个对象作为参数传进去执行。
简单来说,你是把处理请求的「逻辑模板」交给服务器,当有请求进来时,服务器会自动把请求相关的上下文数据(w和r)递给这个模板,让它完成具体的响应处理。
内容的提问来源于stack exchange,提问作者Ariel Marcelo Pardo
相关产品推荐
相关产品推荐

