← ко всем постам
2026-06-15 · #basics

Дженерики в Go: зачем ждали и как использовать

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

func Map[T, U any](s []T, f func(T) U) []U {
    r := make([]U, len(s))
    for i, v := range s {
        r[i] = f(v)
    }
    return r
}

Не увлекайтесь

Дженерики хороши для контейнеров и утилит вроде Map, Filter, Keys. Но если задачу решает обычный интерфейс — используйте интерфейс. Идиома Go по-прежнему ценит простоту выше универсальности.

Хорошее правило: пишите конкретный код, а обобщайте, только когда дублирование становится реальной болью.