Je veux savoir ce qui se passe ici.Fonction implémentant l'interface
Il est l'interface pour un gestionnaire http:
type Handler interface {
ServeHTTP(*Conn, *Request)
}
Cette mise en œuvre, je pense que je comprends. D'après ce que j'ai compris, c'est que le type "Counter" implémente l'interface car il a une méthode qui a la signature requise. Jusqu'ici tout va bien. Alors cet exemple est donné:
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);
Quelqu'un peut-il expliquer pourquoi et comment ces différentes fonctions s'emboîtent?
Ok, je pense que je comprends maintenant, la chose qui m'a fait trébucher était la conversion de notFound à HandlerFunc. Après avoir relu la section des conversions d'efficacité, il est plus clair comment cela peut également s'appliquer aux fonctions. http://golang.org/doc/effective_go.html#conversions – mbarkhau