Что такое Generics в Go

«Что такое Generics в Go» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Generics (обобщённые типы) в Go позволяют писать функции и структуры, работающие с разными типами данных без дублирования кода. Появились в Go 1.18.

Пример функции с Generics:

func PrintSlice[T any](s []T) {
    for _, v := range s {
        fmt.Println(v)
    }
}

Ключевые моменты:

  • Используются угловые скобки <T> для объявления типа-параметра
  • any — аналог пустого интерфейса, но для generics
  • Можно добавлять ограничения типов через интерфейсы
  • Работает с функциями, структурами, методами и интерфейсами

Ограничения:

  • Нет специализации (как в C++)
  • Нет метапрограммирования
  • Некоторые сложные случаи требуют явного указания типов