前言

在前面的 一文熟悉 Go 函数 文章中,介绍了 Go 函数的声明,函数的几种形式如匿名函数、闭包、基于函数的自定义类型和函数参数详解等,而本文将对方法进行介绍,方法的本质就是函数,介绍方法的同时也会顺带对比其与函数的不同之处。

方法

在 Go 中,我们可以为任何的数据类型定义方法(指针或接口除外),现在让我们看一看方法的声明和组成部分以及与函数有什么不同之处。

PersonageSetAgePerson
funcreceiver(p *Person)GoreceiverreceiverGo

方法的调用

变量.方法名(参数)
personSetAge

Receiver 参数类型的选择

Receiver

如果方法体里不涉及到修改结构体变量的属性值,使用值类型

GetAgereceiverPerson

如果方法体里有修改结构体变量的属性值的操作,使用指针类型

SetAgereceiver

方法的约束

Go

不能为基本数据类型声明方法

因为基本数据类型所定义的位置,是不在我们所编码的包里面的。

不能跨越包为其他包的类型声明方法

Go

小结

ReceiverGo