如何找出哪些类型在Golang中实现哪个接口?

时间:2013-01-29 06:47:23

标签: go

示例:

在包io中,类型ByteReader定义了一个包装方法ReadByte() (c byte, err error)的接口。

在标准库中找出 哪种类型的最简单方法是什么?(listed here in golang.org/pkg满足此界面

这只是经验问题还是有其他帮助?

2 个答案:

答案 0 :(得分:16)

主要是通过经验。无论如何,例如:

jnml@fsc-r630:~/go/src/pkg$ egrep -nr '^func (.*) ReadByte\(' *
bufio/bufio.go:165:func (b *Reader) ReadByte() (c byte, err error) {
bytes/reader.go:59:func (r *Reader) ReadByte() (b byte, err error) {
bytes/buffer.go:289:func (b *Buffer) ReadByte() (c byte, err error) {
encoding/xml/xml_test.go:234:func (d *downCaser) ReadByte() (c byte, err error) {
strings/reader.go:58:func (r *Reader) ReadByte() (b byte, err error) {
jnml@fsc-r630:~/go/src/pkg$ 

golang.org网站也有case sensitive search capability

答案 1 :(得分:8)

现在有更好的方法来做到这一点,而不仅仅是搜索。

Go Oracle有一个implements query,它将显示哪些类型实现了特定的接口,以及特定类型实现的接口。

此外,这是一个声称提供相同功能的工具:https://github.com/dominikh/implements