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

Чем отличаются интерфейсы от обобщенных типов в программировании?

Компании, где спрашивали
Miatel

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

sobes.tech AI

Интерфейсы и обобщённые типы (generics) решают разные задачи в программировании:

  • Интерфейсы описывают набор методов, которые должен реализовать тип. Они позволяют работать с разными типами через общий контракт, обеспечивая полиморфизм. Например, интерфейс Reader в Go определяет метод Read(), и любой тип, реализующий этот метод, может использоваться как Reader.

  • Обобщённые типы позволяют писать функции и структуры, которые работают с разными типами данных, сохраняя при этом типовую безопасность. Это шаблоны, параметризованные типами, которые компилируются под конкретные типы при использовании.

Пример на Go:

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

// Обобщённая функция
 func PrintSlice[T any](s []T) {
     for _, v := range s {
         fmt.Println(v)
     }
 }

Таким образом, интерфейсы определяют поведение, а обобщённые типы — универсальность кода для разных типов.