Обобщения (добавлены в Go 1.18) позволяют писать функции и типы, работающие с несколькими типами через параметры типов, сохраняя при этом безопасность типов на этапе компиляции. Они устраняют старый компромисс между дублированием кода для каждого типа или потерей безопасности с помощью interface{}.
Проблема, которую решают обобщения
{ ... }
{ ... }
{} { ... }
