查找返回特定类型的函数

时间:2015-04-10 05:59:16

标签: go

也许这是一个愚蠢的问题,但有没有办法找到返回特定类型的所有函数(在标准库或GOPATH中)?

例如,有许多函数将io.Writer作为参数。现在我想知道如何创建一个io.Writer,有很多方法可以做到这一点。但是,如何在不猜测包装并查看所有返回io.Writer(或者我之后的其他类型)的方法的情况下轻松找到所有方法?

编辑:我应该扩展我的问题,以找到实现特定接口的类型。坚持使用io.Writer示例(这无疑是原始问题的一个不好的例子),有一种方法可以找到实现Writer接口的任何类型,因为这些类型将是一个需要采取的函数的有效参数一个io.Writer,因此当类型是一个接口时回答原始问题。

2 个答案:

答案 0 :(得分:3)

也许不是最好的方法,但请查看官方golang.org网站顶部的搜索字段。如果您搜索"Writer"

http://golang.org/search?q=Writer

您会收到很多结果,按类别分组

还要注意io.Writer是一个接口,我们都知道Go如何处理接口:当实现接口时,没有intent的声明,如果接口定义的方法是一个类型隐式实现接口声明。这意味着您无法找到许多创建和返回io.Writer的示例,因为类型可能名称完全不同,仍然是io.Writer

如果您寻找非接口类型,例如bytes.Buffer,那么事情会变得容易一些。

此外,在类型的声明包的文档中,Index部分按类型包的函数和方法进行分组,因此您将找到的函数和方法包,用于在Index部分的条目/链接下返回您正在寻找的类型。

另请注意,您可以在godoc.org检查软件包的依赖关系。例如,您可以看到哪些包导入了io包,这可能是寻找更多示例的良好起点(如果包io,这将会非常耗费,因为它很普遍,目前23410 packages import it)。

答案 1 :(得分:2)

在我编写代码的时候,我个人很少需要找到返回Int16error的函数(func可以在Go中返回几个值,你知道)

对于你问题的第二部分,存在由Dominik Honnef编写的精彩cmd implements go get honnef.co/go/implements 在发现满足条件的类型之后,您可以假设类型的构造函数(类似func NewTheType() TheType)将在源代码和文档中的TheType声明之后。这是一个经过验证的Go练习。