方法基础篇
目录
1. 方法
方法必须有一个接收者,这个接收者是一个类型(这个类型可以是Go自带的类型,也可以是我们自己定义的类型),这样方法
就和这个类型绑定在一起,称为这个类型的方法
|
|
例如上面示例,String() 就是方法名
,中间的是接收者,接收者
的定义和普通变量一样、函数参数一样,前面是变量名,后面是接收者类型。
2. 指针类型接收者
|
|
如果使用值类型调用指针类型接受者的方法,Go语言编译器会自动帮我们取指针调用
如果使用指针类型调用值类型接收者的方法,Go语言会自动帮我们解引用调用
我们在实际编码中不需要关注上面两点,不需要关注调用者是谁。需要关注的是,如果需要修改值,那么最好还是使用指针型接收者。
3. 函数和方法
调用方法的时候本质上是副本,一个是值的副本,一个是指针的副本。
函数和方法两个概念基本相同,不同的是所属的对象,不管是函数还是方法,它们都是代码复用的第一步,也是代码职责分离的基础,降低代码的重合度。
函数直接调用就可以,是属于package的。
方法
是属于对象
的。调用的时候需要对象.方法名()
4. 方法名赋给变量
函数是可以赋给变量的,在函数的博客有介绍。那么方法是否可以呢,又怎么调用呢?
|
|
循规蹈矩写就可以了,不推荐上面的写法。可读性太差了。
上面例子不是很好。但可以借助这个例子理解一下,方法的定义
,接收者
等概念。
5. 总结
- 方法的核心在于Receiver,区分函数和方法,主要
看代码结构
,因为有时候函数的参数也是type型,容易弄混。 - 方法的调用需要recevier来调用,而函数直接调用就可以。
- 尽可能使用指针型recevier