Добавить в корзинуПозвонить
Найти в Дзене
PRO Go

🤓generics, когда понимаешь, что копипастить — это не путь

😩 Пишешь одинаковые функции для разных типов данных, копируешь один и тот же код по несколько раз, и всё равно чувствуешь, что это костыли. А потом открываешь чужой проект — и там всё элегантно, коротко, аккуратно. И ты такой: «Ну как? Как он это сделал?» Как выглядит боль Ты начинаешь с простого: func SumInt(a, b int) int { return a + b } func SumFloat(a, b float64) float64 { return a + b } 🤡И вроде всё нормально. Но потом таких функций становится 10, 20, 30… И ты понимаешь, что просто клонируешь код, а любое изменение нужно вносить везде. Как это решается красиво func Sum[T int | float64](a, b T) T { return a + b } Одна функция. Один код. Работает для всех нужных типов. Дженерики — это не сложный синтаксис. Это способ убрать дублирование, сделать код честно универсальным и перестать плодить копии ради копий.

😩 Пишешь одинаковые функции для разных типов данных,

копируешь один и тот же код по несколько раз,

и всё равно чувствуешь, что это костыли.

А потом открываешь чужой проект — и там всё элегантно, коротко, аккуратно.

И ты такой: «Ну как? Как он это сделал?»

Как выглядит боль

Ты начинаешь с простого:

func SumInt(a, b int) int {
return a + b
}
func SumFloat(a, b float64) float64 {
return a + b
}

🤡И вроде всё нормально.

Но потом таких функций становится 10, 20, 30…

И ты понимаешь, что просто клонируешь код,

а любое изменение нужно вносить везде.

Как это решается красиво

func Sum[T int | float64](a, b T) T {
return a + b
}

Одна функция.

Один код.

Работает для всех нужных типов.

Дженерики — это не сложный синтаксис.

Это способ убрать дублирование, сделать код честно универсальным и перестать плодить копии ради копий.