我很难理解为什么这些规则与指针类型.vs的方法集相关联。值类型
有人可以解释一下原因吗(从界面表的角度)
(威廉·肯尼迪博客的摘录)
Values Methods Receivers ----------------------------------------------- T (t T) *T (t T) and (t *T) Methods Receivers Values ----------------------------------------------- (t T) T and *T (t *T) *T
规格摘要
方法集
类型可能具有与之关联的方法集。接口类型的方法集是其接口。任何其他类型T的方法集都包含以接收者类型T声明的所有方法。相应指针类型 T的方法集是所有以接收者 T或T声明的方法的集合(也就是说,它还包含方法T集)。进一步的规则适用于包含匿名字段的结构,如有关结构类型的部分中所述。其他任何类型的方法集都为空。在方法集中,每个方法必须具有唯一的非空白方法名称。
类型的方法集确定该类型实现的接口以及可以使用该类型的接收器调用的方法。
*T
T
t.Meth()
(&t).Meth()
I
简而言之,您可以将方法与值接收器混合使用,将方法与指针接收器混合使用,并将它们与包含值和指针的变量一起使用,而不必担心哪个是哪个。两者都可以使用,并且语法相同。但是,如果需要使用带有指针接收器的方法来满足一个接口,则只能将一个指针分配给该接口- 值将无效。