本文视频地址
方法声明
func(接受者 类型/类型指针) 方法名(参数列表)(返回值列表{
//方法体
}
通过接收者,上述方法被绑定到某个类型上了。上述方法就是类型的一个方法,通过类型或类型指针的实例调用该方法。
var t T
t.MethodName(参数列表)
var pt *T = &t
pt.MethodName(参数列表)
方法名首字母大写巨鼎是导出方法(公开的)
方法名定义要和类型定义放在同一个包中。
func (t T) X1() 等价 X1(t T)
当接收者类型为T的时候,Go函数的参数采用的是值传递的,这样X1对t的任何修改都是在副本上的,不会影响原来T类型的实例。
func (t T) X2() 等价 X2(t T)
以*T作为接收者,这样你对t的任何修改都会直接反应到T类型的实例中。
如果你要对类型实例进行修改,那么接收者选型T指针类型。
如果没有对类型实例修改的需求,那么T类型和T类型均可;但是考虑调用方法的时候接收者是值拷贝,如果size较大,以值传递导致消耗过大,这是还是T更合适一些。
有疑问加站长微信联系(非本文作者)