Ich möchte wissen, was hier passiert.Funktion Implementierung Schnittstelle
Es ist die Schnittstelle für einen http-Handler:
type Handler interface {
ServeHTTP(*Conn, *Request)
}
Diese Implementierung Ich glaube, ich verstehe.
Aus meiner Sicht ist es, dass der Typ "Counter" die Schnittstelle implementiert, da es eine Methode hat, die die erforderliche Signatur hat. So weit, ist es gut. Dann ist dieses Beispiel gegeben:
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);
Kann jemand näher erläutern, warum oder wie diese verschiedenen Funktionen zusammenpassen?
Ok Ich denke, ich verstehe es jetzt, die Sache, die mich stolperte, war die Umwandlung von notFound in HandlerFunc. Nach dem erneuten Lesen des Konvertierungsabschnitts von effective go ist es klarer, wie dies auch für Funktionen gelten kann. http://golang.org/doc/effective_go.html#conversions – mbarkhau