- 如果您有a
*T
,则可以调用具有接收器类型的*T
方法以及具有接收器类型的方法T
(您引用的段落, 方法集)。 - 如果具有a
T
并且它是可寻址的,则可以调用具有接收器类型的*T
方法以及具有接收器类型T
的方法,因为该方法调用t.Meth()
将等效于(&t).Meth()
(Calls)。 - 如果您有一个
T
且无法寻址,则只能调用接收者类型为T
而不是的方法*T
。 - 如果您有一个接口
I
,并且I
方法集中的某些或全部方法由接收者为的方法提供*T
(其余部分由接收者为的方法提供T
),则*T
满足该接口I
,但T
不满足。那是因为*T
的方法集包含T
,但不是(反过来又回到第一点)。
简而言之,您可以将方法与值接收器混合使用,将方法与指针接收器混合使用,并将它们与包含值和指针的变量一起使用,而不必担心哪个是哪个。两者都可以使用,并且语法相同。但是,如果需要使用带有指针接收器的方法来满足一个接口,则只能将一个指针分配给该接口-
值将无效。



