golang學習 方法別名 1

2021-07-13 18:06:47 字數 1388 閱讀 5892

前言:本系列文章記錄筆者使用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道題目也沒補完。不得不說,自學的效率是比較低的。我想從幾個方面比較分析阻礙自己進步的原因。首先,看書應該怎麼看?先粗略看,了解大體意思。再細緻看,深挖細節和精華。這樣兩遍下來,基本意思應該就了解的差不多了。再看一遍,這一遍應當更加...