声明go服务器的ServeHTTP方法
我正在遵循编写Go服务器的指南 我不明白下面这段话:声明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)做了什么呢?在下面的方法声明中
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-注意,在这种情况下,该方法没有返回类型。函数可以返回零、一个或多个值。