मैं जानना चाहता हूं कि यहां क्या हो रहा है।फ़ंक्शन कार्यान्वयन इंटरफ़ेस
type Handler interface {
ServeHTTP(*Conn, *Request)
}
इस कार्यान्वयन मुझे लगता है कि मैं समझता हूँ:
एक http हैंडलर के लिए इंटरफ़ेस है।
type Counter int
func (ctr *Counter) ServeHTTP(c *http.Conn, req *http.Request) {
fmt.Fprintf(c, "counter = %d\n", ctr);
ctr++;
}
मेरी समझ से यह है कि "काउंटर" इंटरफ़ेस लागू करता है क्योंकि इसमें एक विधि है जिसमें आवश्यक हस्ताक्षर हैं। अब तक सब ठीक है। फिर यह उदाहरण दिया गया है:
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);
क्या कोई यह बता सकता है कि इन विभिन्न कार्यों को एक साथ क्यों या कैसे फिट किया जाता है?
ठीक है मुझे लगता है कि मुझे अब यह मिल गया है, जिस चीज ने मुझे फिसल दिया वह थाफलर हैंडलफनक का रूपांतरण था। प्रभावी जाने के रूपांतरण अनुभाग को फिर से पढ़ने के बाद यह अधिक स्पष्ट है कि यह फ़ंक्शंस पर भी कैसे लागू हो सकता है। http://golang.org/doc/effective_go.html#conversions – mbarkhau