首页 > 后端开发 > Golang > Go 函数声明中的接收者有什么作用?

Go 函数声明中的接收者有什么作用?

DDD
发布: 2024-12-20 10:55:21
原创
198 人浏览过

What Does the Receiver in Go Function Declarations Do?

Go 函数声明中括号内是什么?

在 Go 中,你可能会遇到语法如下的函数声明:

func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    ...
}
登录后复制
func (s *GracefulServer) BlockingClose() bool {
    ...
}
登录后复制

括号内的内容,例如 (h handler) 和(s *GracefulServer),被称为“接收者”。 Go 中的工作方式与其他语言不同。

接收者作为一个类

接收者类型,就像面向对象编程中的类,代表实体调用哪些方法。例如,如果 A 是类 Person 中的方法,则需要 Person 的实例来调用 A。

作为值或指针的接收器

在上面的示例中, h 是值类型,而 s 是指针。这种区别会影响方法的运行方式:

  • 值类型(例如处理程序):对方法内接收器的修改不会影响原始实例。
  • 指针类型(例如,*GracefulServer):对接收器所做的更改保留在原始版本中

何时使用指针

当您想要修改接收器的状态时,使用指针作为接收器。例如,如果需要 BlockingClose 来改变 GracefulServer 的状态,则 *GracefulServer 是必需的。

规范参考:

更多详细信息,请参考 Go 官方规范:https://golang.org/ref/spec#Method_sets

以上是Go 函数声明中的接收者有什么作用?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板