我试图在我的游戏服务器代码库中更多地使用接口,我正在编写并理解高级概念,以及应该何时使用(我认为)。在我的例子中,我使用它们来将包与其他包分离,并使测试变得更容易。
我的问题归结为我有一个有ptr接收方法的结构。然后,我通过一个接口将这个结构传递给另一个函数,就像在这个游乐场中一样,我搞不懂为什么一个参数为接口类型的函数能够接受一个地址到实现该接口的东西。为什么不是func something(f *face),*interface有什么用途?
发布于 2018-03-01 12:13:07
“类型接口的参数可以接受实现该接口的东西的地址”,这种情况不是这样的。恰恰相反。
您的具体foo做的是而不是实现接口面。事实并非如此。
只有*foo这样做,这是一个不同的类型在Go。
只能将*foo分配给face类型的变量。(好的,Go中有一些糖可以让您在脸上寻址,但是在这里,获取指针的过程是自动的)。
看看语言规范和类型系统。
https://stackoverflow.com/questions/49049076
复制相似问题