原创分享 17. Go 语言 - 方法是什么

happy_brother · 2021年01月21日 · 60 次阅读

本文视频地址

方法声明

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

更多原创文章干货分享,请关注公众号
  • 加微信实战群请加微信(注明:实战群):gocnio
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册