2010-08-02 92 views
0

具有以下被定义为http库指出:通过给在Go的HTTP库自定义现有的处理程序

func Handle(pattern string, handler Handler) 
type Handler interface { ServeHTTP(*Conn, *Request) } 

我怎样才能改善现有的处理程序(比如,websocket.Draft75Handler例如)它的额外的参数(并告诉它如何处理参数)?

我试图创建一个处理程序,其中包含一个通道的一端。它将使用该频道与节目的其他部分进行交谈。我怎样才能将这个通道加入处理函数?

道歉,如果这是一个愚蠢的问题。我是新手,决定通过阅读教程学习,然后跳入代码。谢谢你的帮助!

回答

2

如果类型是一个功能,如websocket.Draft75Handler,你可以在一个封闭包装它:

func MyHandler(arg interface{}) websocket.Draft75Handler { 
    return func(c *http.ConnConn) { 
     // handle request 
    } 
} 

func main() { 
    http.Handle("/echo", MyHandler("argument")) 
    err := http.ListenAndServe(":12345", nil) 
    if err != nil { 
     panic("ListenAndServe: " + err.String()) 
    } 
}