Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
声明go服务器的ServeHTTP方法_Go - Fatal编程技术网

声明go服务器的ServeHTTP方法

声明go服务器的ServeHTTP方法,go,Go,我正在遵循编写Go服务器的指南 我不明白下面这段话: func (*myHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { // ^^^^^ What does this do? 它看起来不像是返回类型。在Go中,我的理解是返回类型遵循函数的参数。类似于此返回整数的函数: func hello(s String) int {} 那么ServeHTTP声明中的(*myHandler)做了什么呢?在下面的方法声明中

我正在遵循编写Go服务器的指南

我不明白下面这段话:

func (*myHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
  //    ^^^^^ What does this do?
它看起来不像是返回类型。在Go中,我的理解是返回类型遵循函数的参数。类似于此返回整数的函数:

func hello(s String) int {}

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

在下面的方法声明中

func (*myHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
myHandler
是方法的接收者。Go文档中解释了这一点,关于:

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

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


在下面的方法声明中

func (*myHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
myHandler
是方法的接收者。Go文档中解释了这一点,关于:

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

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


ServeHTTP是类型为*myHandler的方法。请参阅ServeHTTP是类型为*myHandler的方法。请参阅@dopatraman-注意,在这种情况下,该方法没有返回类型。函数可以返回零、一个或多个值。@dopatraman-注意,在这种情况下,该方法没有返回类型。函数可以返回零、一个或多个值。