我正在按照编写Go服务器here的指南。
我不明白以下一块:
func (*myHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
// ^^^^^ What does this do?
它看起来不像返回类型。在Go中,我的理解是返回类型遵循函数的参数。就像这个返回整数的函数一样:
func hello(s String) int {}
那么ServeHTTP声明中的(*myHandler)
是做什么的?
答案 0 :(得分:2)
在以下方法声明中
func (*myHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
myHandler
是该方法的接收者。关于method definition的Go文档中解释了这一点:
方法是具有接收器的函数。方法声明将标识符(方法名称)绑定到方法,并将方法与接收方的基本类型相关联。
通过方法名称前面的额外参数部分指定接收器。该参数部分必须声明一个非可变参数,即接收器。它的类型必须是T或* T形式(可能使用括号),其中T是类型名称。由T表示的类型称为接收器基类型;它不能是指针或接口类型,必须在与方法相同的包中声明。该方法被称为绑定到基类型,方法名称仅在类型T或* T的选择器中可见。