定义

方法是与对象实例绑定的特殊函数,是面向对象编程的基本概念

  • 方法的receive类型可以是基础类型或指针类型,这会关系到调用对象实例时是否被复制
  • 可以使用实例值或指针调用方法,编译器会根据方法receive类型自动在基础类型和指针类型间转换
  • 不能使用多级指针调用方法

如何选则方法的receive类型?

  • 要修改实例状态,用*T
  • 无须修改状态的小对象或固定值,建议用T
  • 大对象建议用*T,以减少复制成本
  • 引用类型、字符串、函数等指针包装对象,直接用T
  • 若包含Mutex等同步对象,用*T,避免因复制造成锁操作无效
  • 其他无法确定的情况,用*T

方法集

类型有一个与之相关的方法集(method set ),这决定了它是否实现某个接口

  • 类型T方法集包含所有receiver T 方法
  • 类型 *T方法集包含所有receiver T + *T方法
  • 匿名嵌入S,T方法集包含所有receiver S 方法
  • 匿名嵌入*S,T方法集包含所有receiver S+ *S 方法
  • 匿名嵌入S或*S,*T方法集包含所有receiver S+ *S 方法

results matching ""

    No results matching ""