0

我正在尝试在我的代码库中更多地为我正在编写的游戏服务器使用接口,并理解高级概念以及何时应该使用(我认为)。就我而言,我正在使用它们将我的软件包彼此分离,并使测试更容易。

我的问题归结为我有一个具有 ptr 接收方法的结构。然后我通过接口将此结构传递给另一个函数,就像在这个操场上一样,我很困惑为什么具有接口类型参数的函数可以接受实现该接口的东西的地址。为什么不是func something(f *face),有什么目的*interface

4

1 回答 1

1

“接口类型的参数可以接受实现该接口的东西的地址”并不是这种情况。恰恰相反。

您的具体 foo没有实现接口面。它没有。

*foo在 Go 中是不同的类型。

只能分配*foo给 face 类型的变量。(好吧,Go 中有一些糖可以让你面对一个可寻址的 foo,但这里获取指针的过程是自动的)。

看看语言规范和类型系统。

于 2018-03-01T12:13:07.173 回答