Как узнать, какие типы реализуют интерфейс в Голанге?

Пример:

В пакете io тип ByteReader определяет интерфейс, который обертывает метод ReadByte() (c byte, err error).

Самый простой способ найти , который набирает в стандартной библиотеке (т.е. указанный здесь в golang.org/pkg) удовлетворить этот интерфейс?

Это только вопрос опыта или есть ли какая-нибудь другая помощь?

Ответ 1

В основном по опыту. Во всяком случае, например:

[email protected]:~/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) {
[email protected]:~/go/src/pkg$ 

Кроме того, на сайте golang.org есть чувствительный к регистру поиск.

Ответ 2

Теперь есть лучшие способы сделать это, чем просто искать.

Go Oracle имеет реализует запрос, который покажет, какие типы реализуют определенный интерфейс и какие интерфейсы реализует определенный тип.

Кроме того, здесь представлен инструмент, который утверждает, что предлагает ту же функциональность: https://github.com/dominikh/implements.