我不明白为什么go开发人员选择了类似于func (t Type) MethodName()方法的语法.我无法消化这一事实,特别是在阅读本文并考虑到go是极简主义的事实之后.岂不更简单的语法像func Type.MethodName()或func Type::MethodName()已经足够与物体使用隐含参数像访问this或self.或者我错过了当前语法提供的任何优势?
该特定语法的目标非常特定于Go语言,并且不能轻易映射到其他语言语法:
此语法允许您定义方法集
类型可以具有与其关联的方法集.接口类型的方法集是其接口.
- 任何其他类型的方法集
T包含用接收器类型声明的所有方法T.- 设置相应的指针型的方法
*T是该组的与接收器声明的所有方法*T或T(即,它也包含的方法集T).其他规则适用于包含匿名字段的结构,如结构类型一节中所述.任何其他类型都有一个空方法集.在方法集中,每个方法必须具有唯一的非空方法名称.
它不是一个"优势",而是一个Go功能,允许使用新方法轻松扩展类型.
请参阅" Go接口的一些示例? ".
显式接收器声明允许您执行以下两项特殊操作:
方法接收者的名字应该反映其身份; 通常,其类型的一个或两个字母缩写就足够了(例如"
c"或"cl"代表"Client").不要使用通用名称,例如"
me","this"或"self",这是面向对象语言的典型标识符,它们更强调方法而不是函数.
名称不必像方法论证那样具有描述性,因为它的作用是显而易见的,不起任何文件目的.它可以很短,因为它几乎出现在每种类型的每个方法的每一行上; 熟悉承认简洁.
也要保持一致:如果你c用一种方法调用接收器" ",不要cl在另一种方法中调用它.
| 归档时间: |
|
| 查看次数: |
551 次 |
| 最近记录: |