本文视频地址

办法申明

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更适合一些。