Golang 接口 & *接口
Golang interface & *interface
我正在尝试在我的代码库中为我正在编写的游戏服务器更多地使用接口,并了解高级概念以及何时应该使用接口(我认为)。在我的例子中,我使用它们将我的包相互分离,并使测试更容易。
我的问题归结为我有一个具有 ptr 接收方法的结构。然后我通过接口将此结构传递给另一个函数,就像在 playground 中一样,我很困惑为什么具有接口类型参数的函数可以接受实现该接口的地址。为什么不是func something(f *face)
,*interface
有什么用?
"a parameter of type interface can accept an address to something that implements that interface"并非如此。恰恰相反。
您的具体 foo 不 实现界面。没有。
Go 中只有 *foo
是不同的类型。
您只能 将 *foo
分配给类型为 face 的变量。 (好吧,Go 中有一些糖可以让你将一个可寻址的 foo 指向一张脸,但这里获取指针的过程是自动的)。
查看语言规范和类型系统。
我正在尝试在我的代码库中为我正在编写的游戏服务器更多地使用接口,并了解高级概念以及何时应该使用接口(我认为)。在我的例子中,我使用它们将我的包相互分离,并使测试更容易。
我的问题归结为我有一个具有 ptr 接收方法的结构。然后我通过接口将此结构传递给另一个函数,就像在 playground 中一样,我很困惑为什么具有接口类型参数的函数可以接受实现该接口的地址。为什么不是func something(f *face)
,*interface
有什么用?
"a parameter of type interface can accept an address to something that implements that interface"并非如此。恰恰相反。
您的具体 foo 不 实现界面。没有。
Go 中只有 *foo
是不同的类型。
您只能 将 *foo
分配给类型为 face 的变量。 (好吧,Go 中有一些糖可以让你将一个可寻址的 foo 指向一张脸,但这里获取指针的过程是自动的)。
查看语言规范和类型系统。