也许这是一个愚蠢的问题,但有没有办法找到返回特定类型的所有函数(在标准库或GOPATH中)?
例如,有许多函数将io.Writer作为参数。现在我想知道如何创建一个io.Writer,有很多方法可以做到这一点。但是,如何在不猜测包装并查看所有返回io.Writer(或者我之后的其他类型)的方法的情况下轻松找到所有方法?
编辑:我应该扩展我的问题,以找到实现特定接口的类型。坚持使用io.Writer示例(这无疑是原始问题的一个不好的例子),有一种方法可以找到实现Writer接口的任何类型,因为这些类型将是一个需要采取的函数的有效参数一个io.Writer,因此当类型是一个接口时回答原始问题。
答案 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)
在我编写代码的时候,我个人很少需要找到返回Int16
和error
的函数(func可以在Go中返回几个值,你知道)
对于你问题的第二部分,存在由Dominik Honnef编写的精彩cmd implements
go get honnef.co/go/implements
在发现满足条件的类型之后,您可以假设类型的构造函数(类似func NewTheType() TheType
)将在源代码和文档中的TheType声明之后。这是一个经过验证的Go练习。