我试图通过围棋官方巡回赛来学习围棋,但我发现the section on value vs pointer receivers种围棋的后半部分令人困惑:
In general, all methods on a given type should have either value or pointer receivers, but not a mixture of both. (We'll see why over the next few pages.)个
基本上,我有两个问题:
A)我似乎找不到为什么我们不应该在本章的其余部分混合使用这两种类型的接收器的原因,所以如果有人可以解释或参考讨论这一问题的部分,我将不胜感激.
B)假设混合使用指针和值接收器确实是一个坏主意,那么如何实现不同的接口呢?例如,我发现教程描述了两个不同的内置接口,即Stringer
和error
.在提供的代码中,Stringer
,a value receiver is used和切换到指针接收器似乎不起作用,而在error
接口中,a pointer receiver is used.如何在不违反上述原则的情况下为 struct 实现这两个接口?
注意,我已经研究过类似的问题,关于使用值接收器与指针接收器的缺点,如对象创建,以及保持一致性的重要性(从这question开始),但由于我是真正的初学者,我试图仅结合Go官方巡回赛中的信息/示例来说明这些问题.
谢谢!