Интерфейс в Go задаёт контракт - набор методов. Любой тип, у которого есть все эти методы с нужными сигнатурами, автоматически реализует интерфейс. Явного объявления "implements" не требуется. В Go нет абстрактных классов - интерфейсы используются для полиморфизма и подстановки реализаций.
type Reader interface {
Read(p []byte) (n int, err error)
}
// Любой тип с методом Read([]byte)(int, error) реализует Reader