Sobes.tech
Back to questions
Senior
5

Что такое интерфейсы и чем они отличаются от классов?

Companies where asked
AvitoAvito

Answer from AI

sobes.tech AI

В Go интерфейс — это набор методов, которые должен реализовать тип, чтобы считаться соответствующим этому интерфейсу. В отличие от классов, интерфейсы не содержат реализации, а только описывают поведение.

Ключевые отличия:

  • Интерфейсы описывают только методы, классы (в Go — структуры) содержат данные и методы.
  • В Go нет классов как таковых, есть структуры и интерфейсы.
  • Тип автоматически реализует интерфейс, если у него есть все методы интерфейса (неявная реализация).

Пример:

// Интерфейс
 type Reader interface {
     Read(p []byte) (n int, err error)
 }

// Структура, реализующая интерфейс
 type File struct {}

 func (f File) Read(p []byte) (n int, err error) {
     // реализация
     return 0, nil
 }

 func main() {
     var r Reader = File{} // File реализует Reader
 }