Как относишься к дженерикам

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

Ответ

Дженерики в Go — мощный инструмент, но с оговорками. Они появились в Go 1.18 и решают проблему дублирования кода для разных типов, сохраняя статическую типизацию.

Плюсы:

  • Уменьшают boilerplate (например, для функций Min/Max или коллекций).
  • Сохраняют типобезопасность — ошибки ловятся на этапе компиляции.

Осторожно:

  • Усложняют читаемость, если переусердствовать (например, вложенные дженерики).
  • Не заменяют интерфейсы там, где нужна полиморфность поведения.

Пример:

func SliceContains[T comparable](s []T, val T) bool {
    for _, v := range s {
        if v == val {
            return true
        }
    }
    return false
}
// Использование:
SliceContains([]int{1, 2, 3}, 2)  // true
SliceContains([]string{"a", "b"}, "c")  // false

Итог: дженерики — хорошее дополнение, но не серебряная пуля. Используй там, где они действительно упрощают код, а не ради моды.