知识卡片

显式接收器取代隐式this

专业/工作 · 471.a.3.a.1

内容

很多语言里方法内部会隐含一个叫 self 或 this 的特殊值指代调用者本身,这个绑定是语言运行时 偷偷完成的。Go 没有 self/this 这类关键字,而是要求在方法定义时把接收器显式写成函数名前的 一个普通参数,起什么名字随意(惯例是接收器类型名的首字母小写),在方法体内就像访问其他参数 一样访问它。发散:效果和 self/this 一样——都是让方法拿到调用它的那个值——但 Go 把这个绑定 从语言的。

参考来源

- 位置:《Head First Go语言程序设计》第9章《我喜欢的类型:定义类型》(源文件:_epub-src/index_split_001.html) - 结论依据:原文在该章节围绕“很多语言里方法内部会隐含一个叫self或this的特殊值指代调用者本身,这个绑定是语言运行时偷偷完成的”给出定义、示例或限制条件;摘录中的术语、代码片段或对比关系直接支撑本卡片的结论。 - 原始内容:为名称——小写的接收 器类型名称的首字母。(这就是为什么我们将m来用作MyType接收器 的参数名称。) Go使用接收器参数来代替其他语言中的“self”或者“this”。 有问必答 问:我能否为任何类型定义新的方法? 答:方法和类型必须定义在同一包中。这意味着不会在hacking包中 定义security包中的类型的方法,并且不会为像i…