2016-03-28 62 views
0

我遵循編寫Go服務器的指南here聲明Serve HTTP服務器的方法

我不明白以下塊:

func (*myHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { 
    // ^^^^^ What does this do? 

它沒有看起來像一個返回類型。在Go中,我的理解是返回類型遵循函數的參數。像這樣的函數返回一個整數:

func hello(s String) int {} 

那麼,是什麼在ServeHTTP聲明(*myHandler)嗎?

+6

ServeHTTP是一個* myHandler類型的方法。請參閱https://tour.golang.org/methods/1 –

回答

2

在下面的方法聲明

func (*myHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { 

myHandler是該方法的接收器。這被轉到文檔中說明的約method definition

的方法是用接收機的功能。方法聲明將標識符(方法名稱)綁定到方法,並將該方法與接收方的基本類型相關聯。

接收器通過方法名稱前的額外參數部分指定。該參數部分必須聲明一個單一的非可變參數,即接收器。其類型必須是T或* T的形式(可能使用括號),其中T是類型名稱。由T表示的類型稱爲接收器基類型;它不能是一個指針或接口類型,並且它必須在與方法相同的包中聲明。該方法被稱爲綁定到基類型,並且方法名稱僅在類型T或* T的選擇器中可見。

+0

@dopatraman - 請注意,在這種情況下該方法沒有返回類型。函數可以返回零,一個或多個值。 –