首页 文章

Golang界面和*界面

提问于
浏览
-1

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

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

1 回答

  • 1

    情况并非“接口类型的参数可以接受实现该接口的地址” . 恰恰相反 .

    你的具体foo确实 not 实现了界面 . 它没有 .

    只有 *foo 在Go中是一个不同的类型 .

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

    看一下语言规范和类型系统 .

相关问题