2016-03-28 41 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 - 请注意,在这种情况下该方法没有返回类型。函数可以返回零,一个或多个值。 –