Как узнать, какие типы реализуют интерфейс в Голанге?
Пример:
В пакете 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.