类型方法的特点:
- 可以为命名类型增加方法(除了接口),非命名类型不能自定义方法。
- 为类型增加方法有一个限制,就是方法的定义必须和类型的定义在同一个包中。
- 方法的命名空间的可见性和变量一样,大写开头的方法可以在包外被访问,否则只能在包内可见。
- 使用type定义的自定义类型是一个新类型,新类型不能调用原有类型的方法,但是底层类型支持的运算可以被新类型继承。
类型方法集总结
为简化描述,将接收者为值类型T的方法的集合记录为S,将接收者为指针类型*T的方法的集合统称为*S。
- T类型的方法集是S
- *T类型的方法集是S和*S
- 若类型S包含匿名字段T,则S的方法集包含T的方法集
- 若类型S包含匿名字段*T,则S的方 法集包含T和*T的方法集
- 不管类型S中嵌入的匿名字段是T还是*T,*S方法集总是包含T和*T方法集