接口究竟如何在Go中运行?

时间:2010-06-27 06:44:23

标签: go

在阅读规范以及它们的“Effective Go”部分之后,我仍然不太了解界面如何在Go中工作。

喜欢,你在哪里定义它们?界面执法如何运作?有没有办法指定对象实现接口的地方,而不是简单地定义接口中的方法?

为初学者问题道歉;但我真的很难理解这一点。

2 个答案:

答案 0 :(得分:3)

基本上,您可以定义如下界面:

type InterfaceNameHere interface {
    MethodA(*arg1, *arg2)
    MethodB(*arg3)
}

该特定接口定义要求实现接口的任何内容都具有带有2个参数的MethodA方法和带有1个参数的MethodB方法。

一旦你定义了它,当你尝试使用需要某个界面的东西时,Go会自动检查你正在使用的东西是否满足那个界面。您不必明确声明给定的东西满足给定的接口,当您尝试在预期满足它的场景中使用某些东西时,它就会自动检查。

答案 1 :(得分:3)

Russ CoxIan Lance Taylor's博客上的界面上有一些不错的帖子,我建议您查看。它们可能会涵盖您的问题以及更多......

我认为一个好的概念性示例是net包。在那里,您会找到一个连接界面(Conn),由TCPConnUnixConnUDPConn实施。 Go pkg源代码可能是Go语言的最佳文档。