2010-08-02 50 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()) 
    } 
}