# 方法申明
    方法的声明和普通哈数的什么类似， 只是在函数名字前面多了一个参数。
    这个参数把这个方法绑定到这个参数对应的类型上
    
    命名类型（Point）与指向它们的指针 是唯一可以出现在接收这声明处的类型
    而且为防止混淆 不允许本身是指针的类型进行方法声明
    type P *int
    func (p P) f() {/* ... */} //编译错误 非法的接受者类型
    
# 方法集
    类型有一个与之相关的方法集（method set） 这决定了他是否实现了某个接口
    
    类型T方法集包含了所有 receiver T方法
    类型*T方法集包含了所有receiver T + *T方法
    匿名嵌入S， T方法集包含了所有 receiver S方法
    匿名嵌入*S, T方法集包含了所有receiver S + *S方法
    匿名嵌入S或*S, *T方法集包含了所有receiver S+ *S方法
