在this blog post中,作者声明:
当然,结构可以实现接口,所以通常你会倾向于 把它们视为同一件事。但是当你处理一个结构时, 你可能会通过引用传递,其中类型是* myStruct,或者 你可能会通过值传递,其中类型只是myStruct。如果, 另一方面,你正在处理的事情是"只是"一个 接口,你永远不会指向它 - 接口是一个指针 在某种意义上。当您查看代码时,它会让您感到困惑 在没有*的情况下传递东西以便记住它可能 实际上"是一个指针"如果它是一个界面而不是一个结构。
Go的界面在什么意义上被视为指针?请提供一些例子。
答案 0 :(得分:3)
这句话很奇怪。我想他想说一下这一点:指针接收器上的方法清楚地表明该方法可能会修改接收器,因为该方法是在原始结构上而不是在副本上调用的。这清楚地表明“你在这里工作指针,这可能会修改原件!”在接口值中包装结构后会丢失:您可以传递接口值的副本,但所有这些副本都包含相同的结构。