前言:本系列文章記錄筆者使用golang開發過程中碰到的稍微有點含量的知識點,供大家分享,歡迎拍磚。
「方法別名」,似乎不太準確,延續c語言中的typedef叫法,在golang中表述如下;
type myfunc func(string) string
用法1: 為相同的方法簽名提供統一的訪問入口
舉例,使用golang編寫乙個http伺服器,提供學生管理的基於http的微服務,例如,新增學生、修改學生、刪除學生,為此需要開發三個業務方法實現這三個業務邏輯,如下:
func addstu(param string) string
func editstu(param string) string
func delstu(param string) string
我們在乙個http請求分發器中呼叫這三個業務方法,如下:
}在handlerequest方法中,通過switch結果判斷請求url的路徑來呼叫相關的業務處理方法,若業務方法由3個增加至30個,上述結構未免過於繁瑣,此時可通過「方法別名」解決該問題,首先定義map變數
mymap := make(map[string]myfunc, 30)
然後新增請求路徑與對應的業務方法:
mymap["/add"] = addfunc
mymap["/edit"] = editfunc
mymap["/del"] = delfunc
於是我們可以修改上述handlerrequest處理邏輯
var op = r.url.path
mymap[op](param)
總結: 方法別名,類似於c語言中的函式指標,為所有相同的引數簽名的方法提供統一的方法方式,達到**簡化的目的
用法2: 通過方法別名實現介面
例如:有這樣乙個介面
type handler inte***ce {
func do(param string) string
如何通過上述方法別名實現該介面呢? 方面別名本質上是乙個物件,所以必須為該物件新增乙個方法,如下:
func (f *myfunc)do(param string) string {
return f(param)
新增的該方法,實質上是自己呼叫了本身。 於是,我們可以介面呼叫該方法別名包裝的方法,如:
var handler handler
handler = myfunc(addstu)
handler.do(param)
總結:個人感覺通過方法別名實現介面,省去了為所有方法構造物件的麻煩,因為方法別名本身就是乙個物件,呵呵!
統計學習方法 1 統計學習方法概論
統計學習的主要特點是 1 統計學習以計算機及網路為平台,是建立在計算機及網路之上的 2 統計學習以資料為研究物件,是資料驅動的學科 3 統計學習的目的是對資料進行 與分析 4 統計學習以方法為中心,統計學習方法構建模型並應用模型進行 與分析 5 統計學習是概率論 統計學 資訊理論 計算理論 最優化理...
統計學習方法1
1 統計學習方法三要素 model strategy algorithm 1.1 strategy loss function l y,f x risk function r f e l y,f x 也就是損失函式的期望 erm empirical risk minimization 經驗風險最小化...
2019 7 28 學習方法反思(1)
一周的訓練結束了,在這一周裡,說實話,內容沒看多少,看的也不細緻。29道題目也沒補完。不得不說,自學的效率是比較低的。我想從幾個方面比較分析阻礙自己進步的原因。首先,看書應該怎麼看?先粗略看,了解大體意思。再細緻看,深挖細節和精華。這樣兩遍下來,基本意思應該就了解的差不多了。再看一遍,這一遍應當更加...