Go Http包學習之一

2021-09-27 15:29:03 字數 1354 閱讀 5205

來看一段簡單的**,這是入門學習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是基...