理解不一定准确
这种方式变相为方法的设计者提供了一个访问权限的控制手段,如果他用结构体作为接受者,目的就是表达此方法是不会变更结构内部成员的值,那么使用者是可以显示感知到的,增加了代码的健壮性。
当在对象(非对象指针)上直接调用一个指针为接受者的方法,go是不允许的会报错,不会帮调用者做转换。这里就可以看出,go希望保证调用者的数据安全,不愿意违背调用者的意愿。
go没有private这种访问控制方式,所以go简单的使用了在一个副本上进行控制。至于它的效率损失,估计是go认为平均下来这点损耗带来的好处大于弊端,再深入就超出了我对go的了解了。