返回介绍

方法声明

发布于 2024-10-12 12:51:50 字数 969 浏览 0 评论 0 收藏 0

方法是一个带接收者的函数,方法声明为方法绑定标识符作为方法名并指定方法对应的接收者类型。

MethodDecl = "func" Receiver MethodName Signature [ FunctionBody ] .
Receiver   = Parameters .

接收者通过在方法增加一个额外的参数来指定。这个参数必须是一个非可变参数。它的类型必须是 T 或者 T 的指针(可能包含括号)。T 被称作接收者的基础类型;它不能是指针或接口类型,并且只能在同一个包中定义方法。声明后,我们认为方法绑定了基础类型,并且可以通过 T 或 *T 选择器访问方法名。

非空的接收者标识符在方法签名中必须是唯一的。如果接收者的值没有在该方法中使用,那么接收者标识符可以省略。函数和方法的参数也是一样。

对于一个基础类型。绑定的非空的方法名必须是唯一的。如果基础类型是一个结构体,非空的方法名也不能与结构体字段重复。

给定一个 Point 类型。声明:

func (p *Point) Length() float64 {
	return math.Sqrt(p.x * p.x + p.y * p.y)
}

func (p *Point) Scale(factor float64) {
	p.x *= factor
	p.y *= factor
}

为类型 *Point 绑定了 2 个方法 LengthScale

方法的类型就是以接收者作为第一个参数的函数类型,例如 Scale 方法:

func(p *Point, factor float64)

但是以这种方式声明的函数并不是方法。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文