声明服务器的ServeHTTP方法

时间:2016-03-28 01:19:31

标签: go

我正在按照编写Go服务器here的指南。

我不明白以下一块:

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

它看起来不像返回类型。在Go中,我的理解是返回类型遵循函数的参数。就像这个返回整数的函数一样:

func hello(s String) int {}

那么ServeHTTP声明中的(*myHandler)是做什么的?

1 个答案:

答案 0 :(得分:2)

在以下方法声明中

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

myHandler是该方法的接收者。关于method definition的Go文档中解释了这一点:

  

方法是具有接收器的函数。方法声明将标识符(方法名称)绑定到方法,并将方法与接收方的基本类型相关联。

     

通过方法名称前面的额外参数部分指定接收器。该参数部分必须声明一个非可变参数,即接收器。它的类型必须是T或* T形式(可能使用括号),其中T是类型名称。由T表示的类型称为接收器基类型;它不能是指针或接口类型,必须在与方法相同的包中声明。该方法被称为绑定到基类型,方法名称仅在类型T或* T的选择器中可见。