方法和接收者
方法Method
是种作用域特殊类型变量的函数,特定类型的变量称为接收者receiver
。接收者类似Python中的self
。方法的定义格式
1 | func (接收者变量 接收者类型) 方法名(参数列表) (返回参数) { |
-
接受者变量:接收者参数变量命令,直接采用接收者类型名的第一个小写字母,
Person
类型的p
,Student
类型的s
-
接收者类型:接收者类型和参数类似,可以是指针类型和非指针类型
-
接收者的类型可以是任何类型,不仅是结构体,任何类型都可以拥有方法。
-
其他格式和普通函数相同
指针类型接收者
-
由一个结构体指针组成
-
调用方法时修改接收者指针的任意成员变量,在方法结束后,修改都是有效的。
- 什么时候使用指针接收者❓
- 需要修改接收者中的值
- 接收者是拷贝代价比较大的对象
- 保证一致性,若某个方法使用了指针接收者,其他也要使用
1 | package main |
值类型接收者
- 在值类型接收者的方法中可以获取接收者的成员值,但修改操作只是针对副本
- 无法修改接收者变量本身,只是将接收者的值复制了一份
任意类型添加方法
可以将内置的类型使用关键字type来进行自定义类型,然后为自定义的类型添加方法,下面通过一个栗子来表示如何自定义和使用自定义类型:16
1 | //将内置的int定义为myInt类型 |