我想知道这里发生了什么。有一个http处理程序的接口:type Handler interface { ServeHTTP(*Conn, *Request)}我想我了解这种实现。type Counter intfunc (ctr *Counter) ServeHTTP(c *http.Conn, req *http.Request) { fmt.Fprintf(c, "counter = %d\n", ctr); ctr++;}根据我的理解,“ Counter”类型实现了接口,因为它具有一种具有所需签名的方法。到现在为止还挺好。然后给出这个例子:func notFound(c *Conn, req *Request) { c.SetHeader("Content-Type", "text/plain;", "charset=utf-8"); c.WriteHeader(StatusNotFound); c.WriteString("404 page not found\n");}// Now we define a type to implement ServeHTTP:type HandlerFunc func(*Conn, *Request)func (f HandlerFunc) ServeHTTP(c *Conn, req *Request) { f(c, req) // the receiver's a func; call it}// Convert function to attach method, implement the interface:var Handle404 = HandlerFunc(notFound);有人可以详细说明为什么这些功能或如何将它们组合在一起吗?
2 回答
潇湘沐
TA贡献1816条经验 获得超6个赞
您对下半部分到底了解什么?这与上面的模式相同。他们没有定义Counter类型为int,而是定义了一个称为notFound的函数。然后,他们创建一种称为HandlerFunc的函数类型,该函数带有两个参数,即连接和请求。然后,他们创建一个称为ServeHTTP的新方法,该方法绑定到HandlerFunc类型。Handle404只是使用notFound函数的此类的一个实例。
- 2 回答
- 0 关注
- 243 浏览
添加回答
举报
0/150
提交
取消