來看一段簡單的**,這是入門學習go http包的常見例項。簡單的幾行**就完成了乙個http伺服器的構建,go http包的強大可見一斑。
我們首先分析http.handlefunc這個函式到底做了哪些事情。
func
handlefunc
(pattern string
, handler func
(responsewriter,
*request)
)
http.handlefunc內部通過預設路由defaultservemux來呼叫handlefunc函式:
func
(mux *servemux)
handlefunc
(pattern string
, handler func
(responsewriter,
*request)
) mux.
handle
(pattern,
handlerfunc
(handler)
)}
注意看上面**最後一行,將傳入的handler函式(函式簽名為(w http.responsewriter, r *http.request))通過handlerfunc將其強制型別轉換為handlerfunc型別。而handlerfunc本身實現了servehttp方法,因此它是乙個handler型別。
func
(mux *servemux)
handle
(pattern string
, handler handler)
if handler ==
nilif
_, exist := mux.m[pattern]
; exist
if mux.m ==
nil e := muxentry
mux.m[pattern]
= e if pattern[
len(pattern)-1
]=='/'if pattern[0]
!='/'
}
mux.handle函式則將匹配的字串和對應的handler作為一項k-v新增到內部成員m中去,進而完成了路由註冊。m的型別為map[string]muxentry,它儲存了字串和對應的實體muxentry。
接下來就要進行http服務的監聽了。
c 學習之一
建構函式不要為虛 virtual vc 6.0反正不支援,報錯為 error c2633 a inline is the only legal storage class for constructors 據說cb支援,不過,建構函式本來就沒必要為虛,物件初始化時肯定是要呼叫的 不過,有派生類時析構...
JQuery 學習之 一
關於jquery 的歷史就不再講敘了,網路上比比皆是,呵呵不過想學習一門新的技術,了解它的前生和現在的應用範圍以及以後的發展領域是值得翻閱滴.剛剛開始 得做好筆記 推薦 1 官方以及論壇 2 推薦網頁 http www.cssrain.cn demo lab e7 ac ac e4 b8 80 e7...
opencv學習之一
對有關opencv的基礎知識做一系列的總結,今天是第一節 第一章 1.1介紹 opencv open source computer vision library 是乙個基於bsd協議的開源庫,它包含了數百個計算機視覺的演算法實現。這個文件描述了opencv 2.x的api函式,這個版本的api是基...