Sobes.tech
Назад к вопросам
Junior — Middle
85

Чем отличается интерфейс в языке Go и какие его особенности следует знать?

Ответ от нейросети

sobes.tech AI

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

  • Неявная реализация: тип считается реализующим интерфейс, если у него есть все методы интерфейса, без явного указания.
  • Интерфейсы описывают поведение, а не структуру данных.
  • Пустой интерфейс (interface{}) — интерфейс без методов, который может содержать значение любого типа.
  • Интерфейсы могут быть вложенными, объединяя методы нескольких интерфейсов.

Пример:

package main
import "fmt"

type Reader interface {
    Read(p []byte) (n int, err error)
}

type MyReader struct {}

func (r MyReader) Read(p []byte) (n int, err error) {
    // реализация чтения
    return 0, nil
}

func main() {
    var r Reader = MyReader{} // MyReader неявно реализует Reader
    fmt.Println(r)
}