Go的界面在什么意义上可以被视为指针?

时间:2015-01-07 19:50:55

标签: pointers interface go

this blog post中,作者声明:

  

当然,结构可以实现接口,所以通常你会倾向于   把它们视为同一件事。但是当你处理一个结构时,   你可能会通过引用传递,其中类型是* myStruct,或者   你可能会通过值传递,其中类型只是myStruct。如果,   另一方面,你正在处理的事情是"只是"一个   接口,你永远不会指向它 - 接口是一个指针   在某种意义上。当您查看代码时,它会让您感到困惑   在没有*的情况下传递东西以便记住它可能   实际上"是一个指针"如果它是一个界面而不是一个结构。

Go的界面在什么意义上被视为指针?请提供一些例子。

1 个答案:

答案 0 :(得分:3)

这句话很奇怪。我想他想说一下这一点:指针接收器上的方法清楚地表明该方法可能会修改接收器,因为该方法是在原始结构上而不是在副本上调用的。这清楚地表明“你在这里工作指针,这可能会修改原件!”在接口值中包装结构后会丢失:您可以传递接口值的副本,但所有这些副本都包含相同的结构。