17. Go语言---方法是什么

.container .card .information strong · · 221 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

本文视频地址

方法声明

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

image


有疑问加站长微信联系(非本文作者)

本文来自:Segmentfault

感谢作者:.container .card .information strong

查看原文:17. Go语言---方法是什么

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

221 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传