KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I want to know what is happening here. There is the interface for a http handler: type Handler interface { ServeHTTP(*Conn, *Request) } This implementation I think I understand. type Counter int func (ctr *Counter) ServeHTTP(c *http.Conn, req *http.Request) { fmt.Fprintf(c, "counter = %d\n", ctr); ctr++; } From my understanding it is that the type "Counter" implements the interface since it has a method that has the required signature. So far so good. Then this example is given: 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); Can somebody elaborate on why or how these various functions fit together?
Tags (comma-separated)
Save Edits
Cancel